Course Information

  • Instructor: Sang Kil Cha
  • Time: (Tue./Thu.) 9:00 ~ 10:30
  • Location: N1 117
  • TAs:
    • 김대석
    • 김세훈
    • 김정현
    • 박건우
    • 박상준
    • 이준학
  • 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
02/25/2025 Introduction Installing F#
Troubleshooting .NET Core and F# Installation on Windows
Get Started with .NET Core CLI
Why F# is a fun programming language
02/27/2025 Abstraction Indentation
Mathematical Functions
값중심 프로그래밍 (Korean only)
03/04/2025 Integer Arithmetic Two's Complement
Operator Precedence
HW1 out
03/06/2025 Recursion Pattern Matching
03/11/2025 Closures HW2 out
03/13/2025 Data Abstraction Type inference
Tuples
Records
03/18/2025 List 1 Lists HW3 out
03/20/2025 List 2 & Type Constructors More programming practice for list handling
03/25/2025 Higher-order Function 1 MapReduce HW4 out
03/27/2025 Higher-order Function 2 Composition
Purely Functional Data Structures
04/01/2025 Imperative Programming (Online) Unit type HW5 out
04/03/2025 No class (professor out of town)
04/08/2025 Modular Programming Collections
04/10/2025 Active Patterns
04/15/2025 Midterm 9:00 - 10:30
04/17/2025 Midterm week
04/22/2025 Object-Oriented Programming OOP in F#
04/24/2025 Polymorphism HW6 out
04/29/2025 Interface and OOP Design Interfaces
05/01/2025 Laziness and Streams 1 Sequences
05/06/2025 Children's Day
05/08/2025 Laziness and Streams 2 Lazy expressions
Mutex
HW7 out
05/13/2025 Asynchronous Computation Async
Actor model
05/15/2025 No class (professor out of town)
05/20/2025 Computation Expression and Pipelining Computation Expression Zoo
05/22/2025 Parser Combinator Parser Combinators HW8 out
05/27/2025 Interpreter
05/29/2025 Railway-Oriented Programming ROP
06/03/2025 No class (national election day)
06/05/2025 Domain Modeling and Final Remark DDD
06/10/2025 Final Exam 9:00 - 10:30
06/12/2025 Final Week