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 |