Course Information

  • Instructor: Sang Kil Cha
  • Time: (Mon./Wed.) 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/26/2024 Introduction Installing F#
Troubleshooting .NET Core and F# Installation on Windows
Get Started with .NET Core CLI
Why Learn F#?
02/28/2024 Abstraction Indentation
Mathematical Functions
값중심 프로그래밍 (Korean only)
03/04/2024 Integer Arithmetic Two's Complement
Operator Precedence
HW1 out
03/06/2024 Recursion Pattern Matching
03/11/2024 Closures HW2 out
03/13/2024 Data Abstraction Type inference
Tuples
Records
03/18/2024 List 1 Lists HW3 out
03/20/2024 List 2 More programming practice for list handling
03/25/2024 Higher-order Function 1 MapReduce HW4 out
03/27/2024 Higher-order Function 2 Composition
Purely Functional Data Structures
04/01/2024 Modular Programming Collections
HW5 out
04/03/2024 Imperative Programming Unit type
04/08/2024 Active Patterns
04/10/2024 National Election Day
04/15/2024 Midterm 9:00 - 10:30
04/17/2024 Midterm week
04/22/2024 Object-Oriented Programming OOP in F#
04/24/2024 Polymorphism HW6 out
04/29/2024 Interface and OOP Design Interfaces
05/01/2024 Laziness and Streams 1 Sequences
05/06/2024 Children's Day
05/08/2024 Laziness and Streams 2 Lazy expressions
Mutex
HW7 out
05/13/2024 Asynchronous Computation Async
Actor model
05/15/2024 Buddha's Birthday
05/20/2024 Computation Expression and Pipelining Computation Expression Zoo
05/22/2024 Parser Combinator Parser Combinators HW8 out
05/27/2024 Interpreter
05/29/2024 Railway-Oriented Programming ROP
06/03/2024 Domain Modeling DDD
06/05/2024 Final Remark (no slides)
06/10/2024 Final Exam 9:00 - 10:30
06/12/2024 Final Week