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.
  • Some lectures will be held in online via Zoom.
  • We will use Campuswire and KLMS. You can join our Campuswire with password 4938.
  • To contact TAs, please use kaist.ee209.ta.fall24@gmail.com instead of individual emails.
  • Manual for Tools : Slide, Video Link [ctags, cscope, gdb]

Lectures :

Meeting Time Meeting Place
Mon/Wed
10:30~12:00
EE209A Creative Learning Building (E11) Room 301
EE209B Creative Learning Building (E11) Room 302

Professors :

Name Office Hours Office Email
Steven Euijong Whang (EE209A) By appointment N1 516 swhang@kaist.ac.kr
Insu Han (EE209B) By appointment N1 914 insu.han@kaist.ac.kr

Important Schedule:

Release Due (11:55pm) Class / Assignment
9/11 9/24 Assignment 1
9/24 10/11 Assignment 2
10/23 Wed Midterm
10/11 11/1 Assignment 3
11/1 12/6 Assignment 4
12/18 Wed Finals
12/2 12/22 Assignment 5

Lecture Schedule:

Period Topic
Week 1 (9/2) Introduction [slides-A, slides-B]
(9/4) Numbers & Data Types [slides]
Week 2 (9/9, Zoom) Expressions, Control Flow & C Examples [slides]
(9/11, Zoom) Functions [slides]
Week 3 (9/16) No class (Chuseok)
(9/18) No class (Chuseok)
Week 4 (9/23) Variables and Scopes [slides]
(9/25) Arrays & Strings [slides]
Week 5 (9/30) Pointers [slides]
(10/2) Structures & Dynamic Memory Management [slides]
Week 6 (10/7) Testing [slides]
(10/9) No class (Hangul Proclamation Day)
Week 7 (10/14) Debugging
(10/16) Linked List
Week 8 (10/23) Midterm
Week 9 (10/28) Hash Table
(10/30) Modularity
Week 10 (11/4) Assembly Language I
(11/6) Assembly Language II
Week 11 (11/11) Assembly Languages – Functions
(11/13) Assembly Languages – AMD64
Week 12 (11/18) Assembly Languages – Linkers
(11/20) Exceptions and Processes
Week 13 (11/25) Memory Management
(11/27) Dynamic Memory Management
Week 14 (12/2) I/O Management
(12/4) Process Management
Week 15 (12/9) Signals
(12/11) TBA
Week 16 (12/16) Final Exam

Teaching Assistants (EE209A):

Name
Junseok Seo (Head TA) Min Su Kim Taeckyung Lee Jaehyun Kwak Subin Park
Taehyun Kim Taehoon Kim Changho Choi

Teaching Assistants (EE209B) :

Name
Jaehan Kim (Head TA) Seungkwan Kang Seungjun Lee Minkyoo Song Hyeonho Shin
Minseok Kim Haksun Son Inje Hwang Hyeon-Jik Lee

Assignments:

Assignment 1 Assignment 2 Assignment 3 Assignment 4 Assignment 5
TA Taehyun Kim Minseok Kim Jaehyun Kwak Seungkwan Kang Minsu Kim
Taehoon Kim Haksun Son Subin Park Seungjun Lee Changho Choi
Junseok Seo Hyeonho Shin Taeckyung Lee Minkyoo Song Inje Hwang
Jaehan Kim Hyeonjik Lee

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.fall24@gmail.com.
  • You should register office hours and let us know at least one day in advance.
  • Location: Online (Zoom)

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: