Course Information

  • Instructor: Sang Kil Cha
  • Time: (Mon./Wed.) 9:00 ~ 10:30
  • Location: E11 Terman Hall
  • TAs:
    • 김도혁
    • 김도연
    • 김강수
  • Grading:
    • 10% Participation (assignments, in-class activities, etc.)
    • 10% Midterm 1
    • 20% Midterm 2
    • 60% 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.

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. The book includes various exercises for each topic that we learn throughout the course. The pdf of it is also freely available at here.

Schedule

(subject to change)

Date Topic Reading Notes
03/16/2020 Introduction Installing F#
Troubleshooting .NET Core and F# Installation on Windows
Get Started with .NET Core CLI
03/18/2020 Abstraction Indentation
03/23/2020 Currying and Integer Arithmetic Two's Complement
Operator Precedence
03/25/2020 Recursion 1
03/30/2020 Recursion 2 Pattern Matching
04/01/2020 Data Abstraction 1
04/06/2020 Data Abstraction 2, and List 1 Lists
04/08/2020 List 2 More programming practice for list handling
04/13/2020 Midterm 1
04/15/2020 National Election Day
04/20/2020 Higher-order Function 1 MapReduce
04/22/2020 Higher-order Function 2 Composition
04/27/2020 Data Structures and Modular Programming Collections
04/29/2020 Midterm overview
05/04/2020 Midterm 2 9:00 - 11:00
05/06/2020 Midterm week
05/11/2020 Midterm Review
05/13/2020 Imperative Programming Unit type
05/18/2020 Object-Oriented Programming 1 OOP in F#
05/20/2020 Object-Oriented Programming 2
05/25/2020 OOP and Interfaces
05/27/2020 Lazyness and Streams 1 Lazy expressions
06/01/2020 Lazyness and Streams 2
06/03/2020 Asynchronous Computation Async
Actor model
06/08/2020 Computation Expression and Pipelining Computation Expression Zoo
06/10/2020 Parser Combinator 1 Parser Combinators Project out
(due 6/30)
06/15/2020 Parser Combinator 2
06/17/2020 Interpreter
06/22/2020 Domain Modeling DDD
06/24/2020 Final Overview and Conclusion
06/29/2020 Final Exam 9:00 - 10:00
07/01/2020 Final week