Course Description

This course provides the basic background necessary to understand the design and implementation of software components that support modern computer systems. The course covers C programming, machine organization, assembly language, and design, testing and debugging of software components as well as portions of operating systems concepts. Students will also learn how to use text editors, compilers, linkers, debuggers, and other software tools.

Important Notes

  • Both EE209A and EE209B class will be held offline.
  • All the exams (midterm/final) will be conducted offline.
  • We will use Campuswire and KLMS. You can join our Campuswire with password 6173.
  • To contact TAs, please use kaist.ee209.ta.spring24@gmail.com instead of individual emails.
  • Manual for Tools : Slide, Video Link [ctags, cscope, gdb]

Lectures :

Meeting Time Meeting Place
Mon/Wed
13:00~14:30
EE209A Creative Learning Building (E11) Terman Hall
EE209B Creative Learning Building (E11) Room 412

Professors :

Name Office Hours Office Email
John Kim (EE209A) By appointment TBD jjk12@kaist.edu
Youjip Won (EE209B) By appointment TBD ywon@kaist.ac.kr

Important Schedule:

Release Due (11:55pm) Class / Assignment
3/6 3/19 Assignment 1
3/19 4/5 Assignment 2
4/15 Mon Midterm
4/5 4/26 Assignment 3
4/26 5/24 Assignment 4
6/10 Mon Finals
5/21 6/17 Assignment 5

Lecture Schedule:

Period Topic
Week 1 (2/26) Lecture 1. Introduction to C Programming
Week 2 (3/4) Data Types
(3/6) Data Types
Week 3 (3/11) Operators
(3/13) Operators
Week 4 (3/18) Flows of Control
(3/20) Flows of Control
Week 5 (3/25) Functions, Arrays
(3/27) Functions, Arrays
Week 6 (4/1) Pointers
(4/3) Pointers
Week 7 (4/8) Pointers and Functions, Strings
(4/10) General Elections
Week 8 (4/15) Midterm
Week 9 (4/22) Modularity
(4/24) Assembly language I
Week 10 (4/29) Assembly Language II
(5/1) Assembly Languages – Functions
Week 11 (5/6) Children's Day
(5/8) Assembly Languages – Linkers
Week 12 (5/13) Exceptions and Processes
(5/15) Buddha’s Birthday
Week 13 (5/20) Memory Management
(5/22) Dynamic Memory Management
Week 14 (5/27) IO Management
(5/29) Process Management
Week 15 (6/3) Signals
(6/5) Performance
Week 16 (6/10) Final Exam

Teaching Assistants (EE209A):

Name
Jinwoo Park Jinyeong Lim Yunheon Lee Jaehyeong Park Uitaek Hong
Minkyoo Song Hanna Kim

Teaching Assistants (EE209B) :

Name
Juwon Kim - Head TA Seung Won Yoo Sukjoon Oh Wonyong Seo Hyeonsu Jeong
Jaehan Kim Duckwoo Kim

Assignments:

Assignment 1 Assignment 2 Assignment 3 Assignment 4 Assignment 5
TA Sukjoon Oh Wonyong Seo Seung Won Yoo Minkyoo Song Uitaek Hong
Yunheon Lee Jinyeong Lim Jaehyeong Park Hanna Kim Duckwoo Kim
Jaehan Kim Hyeonsu Jeong

Office hour:

Professors' office hours

  • Start the email subject with [EE209].
  • Set up an appointment by contacting the professor via email.
    • E.g., "Hello Professor XXX" is not a good email subject, but "[EE209] Office hour registration" is.

TA office hours

  • If you would like to schedule the office hour, visit this spreadsheet to sign up for office hours.
  • Let us know in advance by emailing us at kaist.ee209.ta.spring24@gmail.com.
  • You should register office hours and let us know at least one day in advance.
  • Location: TBD (Please check the spreadsheet for correct location.)

Textbooks:

Main

Highly recommended books


C Programming: A Modern Approach (2nd Edition), by K.N. King, Norton & Co. 2008

Computer Systems: A Programmer's Perspective (3rd Edition), by Randal Bryant and DaviO'Hallaron, Pearson 2015

The C Programming Language (2nd Edition), by Brian Kernighan and Dennis Ritchie, Prentic Hall 1988

The Practice of Programming, by Brian Kernighan and Rob Pike, Addison-Wesley 1999

Programming with GNU Software, by Michael K. Loukides & Andrew Oram, O'Reilly 1996

Useful resources:

  • Basic UNIX command cheatsheet
  • Reference manuals: this course uses these manuals, for reference only: