Course Information

  • Instructor: Sang Kil Cha
  • Time: (Tue./Thu.) 9:00 ~ 10:30
  • Location: E11 Terman Hall
  • TAs:
    • Minkyu Jung
    • Soomin Kim
    • SeungYeop Lee
    • DongHyeon Oh
  • Grading:
    • 10% Quiz and Participation
    • 50% Homework
    • 20% Midterm
    • 20% Final

This course introduces fundamental concepts in programming language design and implementation. The main aim of this course is to develop skills and confidence to solve computational problems in a concise and efficient manner. Students will learn multiple programming paradigms including functional programming, object-oriented programming, imperative programming, as well as demand-driven programming, with F#, an elegant, yet practical, modern language.

Late Submission Policy

Late assignments will be assessed a late penalty of 10% per day. We allow up to five days of late submission: you will get zero point after five days. We will clone the entire repositories at the deadline, and we will not synchronize further modifications in your repositories from our end. Therefore, students should submit their homework to KLMS after the deadline as a single ZIP file: see this link to see how to create a ZIP file from your GitHub repository. We will deduct half of your available points if you do not use the GitHub interface to create your zip file: your ZIP file should follow the format to make grading easier.

Auxiliary Textbooks

This class does not use a textbook, but students are recommended to read the auxiliary textbooks:

  • Students are strongly recommended to read "Structure and Interpretation of Computer Programs (2nd Edition)" by Harold Abelson and Gerald Jay Sussman, 1996, MIT Press. The PDF of this book is freely available at here.
  • Students who want to learn more about F# may refer to "Functional Programming Using F#" by Michael R. Hansen and Hans Rischel.

Attendance Check

We check attendance everyday. See this repo for more details.

Schedule

(subject to change)

Date Topic Reading Notes
02/26/2019 Introduction HW0 out
02/28/2019 Git and Software Development Background 1 Installing Git
Git How-To
Get Started with .NET Core CLI
HW0 due
03/05/2019 Git and Software Development Background 2 HW1 out
03/07/2019 Abstraction Indentation HW1 due
HW2 out
03/12/2019 Recursion 1 HW2 due
HW3 out
03/14/2019 Recursion 2 HW4 out
HW3 due (by 23:59:59 3/15)
03/19/2019 Datatype 1 HW4 due (by 23:59:59 3/19)
Quiz 0
03/21/2019 Datatype 2 Pattern Matching HW5 out
03/26/2019 List 1 HW5 due (by 23:59:59 3/25)
HW6 out
03/28/2019 List 2 HW6 due (by 23:59:59 4/3)
04/02/2019 Higher-order Function 1 MapReduce HW7 out
04/04/2019 Higher-order Function 2 and Data Structures Composition Quiz 1
04/09/2019 Integer Overflow and Modular Programming HW7 due (by 23:59:59 4/8)
HW8 out
04/11/2019 Midterm overview HW8 due (by 23:59:59 4/15)
04/16/2019 Midterm 9:00 - 12:00 Take-home exam
04/18/2019 Midterm week
04/23/2019 Imperative Programming 1 Second midterm deadline (23:59:59 4/26)
04/25/2019 Imperative Programming 2 HW9 out
04/30/2019 Object-Oriented Programming 1 OOP in F# HW9 due (by 23:59:59 5/1)
Quiz 2
05/02/2019 Object-Oriented Programming 2 HW10 out
05/07/2019 OOP and Interfaces HW10 due (by 23:59:59 5/8)
05/09/2019 Lazyness and Streams HW11 out
05/14/2019 Streams and Asynchronous Computation HW11 due (by 23:59:59 5/15)
05/16/2019 Computation Expression and Pipelining
05/21/2019 Interpreter 1 Parser Combinators HW12 out
05/23/2019 Interpreter 2 HW13 out
05/28/2019 No class HW12 due (by 23:59:59 6/1)
05/30/2019 No class HW13 due (by 23:59:59 5/31)
06/04/2019 Final Overview and Conclusion
06/06/2019 No Class (Memorial Day)
06/11/2019 Final Exam 9:00 - 11:45
06/13/2019