EEE5501-01 Advanced Programming (Spring 2024)
Lectures: Monday 9-9:50am, Wednesday 9-10:50am
Lectures-labs-credits: 3-0-3
Instructor: William J. Song (Office: Engineering Building #3, C410, Email: wjhsong {\at} yonsei {\dot} ac {\dot} kr, Phone: 02-2123-2864)
Teaching assistant: Haneul Park (Office: Engineering Building #2, B705, Email: Rita {\at} yonsei {\dot} ac {\dot} kr, Phone: 02-2123-7290)
Office hours:
- Instructor: By appointment
- Teaching assistant: By appointment
Prerequisites:
- Introduction to C/C++ Programming or equivalent
- EEE2020 or CSI2103 Data Structures and Algorithms in C/C++
Class objectives: This course covers advanced C/C++ programming techniques in Linux environment. Class objectives are as follows.
- Learning advanced programming techniques
- Understanding software-hardware interactions
- Practice of parallel programming
Class rules:
- Honest and ethical behaviors are expected at all times. All cheating attempts (even suspicious activities) will be seriously penalized, and the incidents will be reported to the university administration to take additional actions. No excuses will be heard. It will be one-strike out.
- Students should complete all assignments individually but are encouraged to seek help from the instructor or teaching assistant (TA).
- Discussions between students are allowed, but assignment solutions (i.e., source codes) must not be shared.
- Lectures will be provided only in English. However, students are allowed to use Korean for Q&As.
- Begging partial credits of assignments or exams will be regarded as cheating attempts, and those students will lose all their scores. Ask questions when you think grading is mistaken, not when you want extra credits for no valid reasons.
Textbook:
- Lecture slides
Grading:
- Attendance: 20%
- Class participation: 5%
- Programming assignments: 75% (subject to change)
- Assignment #1: Class
- Assignment #2: Template
- Assignment #3: Multi-threading
- Assignment #4: Message passing interface
- Assignment #5: GPU programming
- Assignment #6: Encription (TBD)
Course plans: (subject to change)
Weeks | Dates | Lectures | Notes | |
1 | 03/04 | 03/06 | Class | |
2 | 03/11 | 03/13 | Class | Assignment #1 |
3 | 03/18 | 03/20 | Makefile and debugging | |
4 | 03/25 | 03/27 | Template | |
5 | 04/01 | 04/03 | Template | Assignment #2 |
6 | 04/08 | Multi-threading | ||
7 | 04/15 | 04/17 | Multi-threading | Assignment #3 |
8 | 04/22 | 04/24 | Midterm (no class) | |
9 | 04/29 | 05/01 | Message passing interface | |
10 | 05/08 | Message passing interface | Assignment #4 | |
11 | 05/13 | GPU programming | ||
12 | 05/20 | 05/22 | GPU programming | Assignment #5 |
13 | 05/27 | 05/29 | Encryption | |
14 | 06/03 | 06/05 | Encryption | Assignment #6 |
15 | 06/10 | 06/12 | Dead week (no class) | |
16 | 06/17 | 06/19 | Final (no class) |