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.)
    • 40% Midterm
    • 50% 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/01/2021 Independence Movement Day
03/03/2021 Introduction Installing F#
Troubleshooting .NET Core and F# Installation on Windows
Get Started with .NET Core CLI
Why Learn F#?
03/08/2021 Abstraction Indentation
Mathematical Functions
값중심 프로그래밍 (Korean only)
03/10/2021 Currying and Integer Arithmetic Two's Complement
Operator Precedence
Exercise
03/15/2021 Recursion 1 Exercise
03/17/2021 Recursion 2 Pattern Matching
03/22/2021 Data Abstraction 1 Type inference
Tuples
Records
Exercise
03/24/2021 Data Abstraction 2, and List 1 Lists
03/29/2021 List 2 More programming practice for list handling Exercise
03/31/2021 Higher-order Function 1 MapReduce
04/05/2021 Higher-order Function 2 Composition Exercise
04/07/2021 Data Structures and Modular Programming Collections
Purely Functional Data Structures
04/12/2021 Imperative Programming Unit type
04/14/2021 Midterm overview
04/19/2021 Midterm 9:00 - 10:00
04/21/2021 Midterm week
04/26/2021 Midterm Review and Object-Oriented Programming 1 OOP in F#
04/28/2021 Object-Oriented Programming 2 Interfaces
05/03/2021 Object-Oriented Programming 3 and Interfaces Exercise
05/05/2021 Children's Day
05/10/2021 Lazyness and Streams 1 Sequences
05/12/2021 Lazyness and Streams 2 Lazy expressions
Mutex
05/17/2021 Asynchronous Computation Async
Actor model
05/19/2021 Buddha's Birthday
05/24/2021 Computation Expression and Pipelining Computation Expression Zoo
05/26/2021 Parser Combinator 1 Parser Combinators
05/31/2021 Parser Combinator 2
06/02/2021 λ-expression Final project out
06/07/2021 Interpreter
06/09/2021 Domain Modeling DDD
06/14/2021 Final Exam 9:00 - 10:00
06/16/2021 Final Week