Course Information

  • Instructor: Sang Kil Cha
  • Time: (Tue./Thu.) 9:00 ~ 10:30
  • Location: N1 117
  • TAs:
    • 김동우
    • 김세훈
    • 이정우
    • Steve Gustaman
  • Grading:
    • 5% Participation (in-class activities, etc.)
    • 20% Homework
    • 35% Midterm
    • 40% Final
  • Office Hours: [link]
  • GitHub main repository: [link]
  • We do not accept late submissions.

This course introduces fundamental concepts in programming. 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 various software engineering principles and 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 is inspired by those freely available books below, so students are recommended to read them.

Schedule

(subject to change)

Date Topic Reading Notes
03/02/2026 No Class (Substitute Holiday for Independence Movement Day)
03/04/2026 Introduction Installing F#
Troubleshooting .NET Core and F# Installation on Windows
Get Started with .NET Core CLI
Why F# is a fun programming language
03/09/2026 Abstraction Indentation
Mathematical Functions
값중심 프로그래밍 (Korean only)
03/11/2026 Integer Arithmetic Two's Complement
Operator Precedence
HW1 out
03/16/2026 Recursion Pattern Matching
03/18/2026 Closures HW2 out
03/23/2026 Data Abstraction Type inference
Tuples
Records
03/25/2026 List 1 Lists HW3 out
03/30/2026 List 2 & Type Constructors More programming practice for list handling
04/01/2026 Higher-order Function 1 MapReduce HW4 out
04/06/2026 Higher-order Function 2 Composition
Purely Functional Data Structures
04/08/2026 Imperative Programming Unit type HW5 out
04/13/2026 Modular Programming Collections
04/15/2026 Active Patterns
04/20/2026 Midterm 9:00 - 10:30
04/22/2026 Midterm week
04/27/2026 Object-Oriented Programming OOP in F#
04/29/2026 Polymorphism HW6 out
05/04/2026 Interface and OOP Design Interfaces
05/06/2026 Laziness and Streams 1 Sequences
05/11/2026 Laziness and Streams 2 Lazy expressions
Mutex
HW7 out
05/13/2026 Asynchronous Computation Async
Actor model
05/18/2026 Computation Expression and Pipelining Computation Expression Zoo
05/20/2026 Parser Combinator Parser Combinators HW8 out
05/25/2026 No Class (Substitute Holiday for Buddha's Birthday)
05/27/2026 Interpreter
06/01/2026 Railway-Oriented Programming ROP
06/03/2026 No class (National Election Day)
06/08/2026 Domain Modeling DDD
06/10/2026 Final remark
06/15/2026 Final Exam 9:00 - 10:30
06/17/2026 Final Week