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.
- Campuswire: [EE209A & EE209B]
- 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 | |
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 [slides] (10/16) Linked List [slides] |
Week 8 | (10/23) Midterm |
Week 9 | (10/28) Hash Table [slides] (10/30) Modularity [slides] |
Week 10 | (11/4) Assembly Language I [slides] (11/6) Assembly Language II [slides] |
Week 11 | (11/11) Assembly Languages – Functions [slides] (11/13) Assembly Languages – AMD64 [slides] |
Week 12 | (11/18) Assembly Languages – Linkers [slides] (11/20) Exceptions and Processes [slides] |
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:
Useful resources:
- Intel® 64 and IA-32 Architecture Software Developer's Manual, Volume 1: Basic Architecture
- Intel® 64 and IA-32 Architecture Software Developer's Manual, Volume 2A: Instruction Set Referece, A-M
- Intel® 64 and IA-32 Architecture Software Developer's Manual, Volume 2B: Instruction Set Referece, N-Z
- Intel® 64 and IA-32 Architecture Software Developer's Manual, Volume 3A: System Programming Guide
- Intel® 64 and IA-32 Architecture Software Developer's Manual, Volume 3B: System Programming Guide
- Tool Interface Standard (TIS) Executable and Linking Format (ELF) Specification
- Using as The GNU Assembler