Course Information
MWF 9:30a–10:20a
BRNG 2280
LAB-L05:
Tue, LWSN B146, 11:30a–1:20p
Leader: Rohit Ranchal
LAB-L01:
Thur, LWSN B158, 1:30p–3:20p
Leader: Dong Su
LAB-L02:
Wed, LWSN B146, 11:30a–1:20p
Leader: Dong Su
LAB-L03:
Tue, LWSN B158, 1:30p–3:20p
Leader: Rohit Ranchal
LAB-L04:
Wed, LWSN B158, 1:30p–3:20p
Leader: Ranjitkumar Sivakumar
Course Communications
This term we will be using Piazza for class discussion. The system is highly catered to getting you help fast and efficiently from classmates, the TA, and myself. Rather than emailing questions to the teaching staff, I encourage you to post your questions on Piazza. If you have any problems or feedback for the developers, email team@piazza.com.
Find our class page at: http://www.piazza.com/purdue/spring2012/cs25200.
Some announcements will also be posted on the course webpage or through the ITAP mailing list. But we will use Piazza as a primary source for posting announcements.
NOTE: We strongly prefer questions be posted to the Piazza forums. If you choose to contact us by email, please email any of your questions to the staff mailing list cs252-people@cs.purdue.edu and not directly. This way, you have the maximum chance of getting your questions answered fast, and ensure a consistent answer.
Instructor
Charles Killian
email: ckillian@cs.purdue.edu
phone: 765–807–7996
office: LWSN 1187
office hours: by appointment, drop-ins welcome (short questions)
Teaching Assistants
Ranchal, Rohit
Sivakumar, Ranjitkumar
Su, Dong
office hours: LWSN B158, Mondays and Thursdays 5–6pm (Ranjitkumar Sivakumar)
Textbook
Advanced Programming in the UNIX Environment by W. Richard Stevens. (Useful for the shell. Good as a reference book.) NOTE: This textbook is not required but is recommended.
Announcements
- 2012–03–21: Synchronization practice code available here: Sync practice code
- 2012–03–21: Lab 5 slides posted.
- 2012–03–10: For PA6, you will need to form teams of 5. Teams need to be formed when PA5 is due, on April 3rd.
- 2012–03–10: PA5 posted - due Tue April 3rd, 11:00 AM
- 2012–02–29: Practice Midterm Posted (link to practice midterm)
- 2012–02–28: PA4 posted - due Tue March 6th, 11:59 PM (PM since the exam is the prior day)
- 2012–02–20: No class Wednesday 2/22. This is a substitution for the evening exam.
- 2012–02–20: Quiz 1 solutions posted - linked from Piazza.
- 2012–02–17: PA3 final due date moved - due Tue Feb 28th, 11:00 AM (Note the time is AM)
- 2012–02–14: PA3 slides posted (all parts)
- 2012–01–31: PA3 final due date updated - now due Tue Feb 21st, 11:59PM
- 2012–01–31: PA3 posted, due Friday, Feb 17th, 11:59PM
- 2012–01–24: PA2 posted, due Tue, Jan 31, 11AM
- 2012–01–11: PA1 posted, due Tue, Jan 24, 11AM
- 2012–01–09: Please use Piazza for course discussion: http://www.piazza.com/purdue/spring2012/cs25200
- 2012–01–09: Mid-term exam: 8p–10p, March 5th, PHYS 112.
- 2012–01–09: There will be NO LABs/PSOs this week.
Course Description
After successfully completing this course:
- You will consolidate the programming skills from the previous core courses.
- You will understand how programs run in user space and how the interact with the OS.
- You will be able to write large programs (>1000 lines).
- You will be able to use tools like IDEs, debuggers, profilers, and source control to help them write good and maintainable code.
- You will learn how to work in teams.
- Use of Scripting Languages.
- You will learn to write multi-process and multi-threaded programs.
Note: This couse does not cover OS internals. That will be covered in the Operating Systems Course (CS35400).
Grades
Subject to change.
- Programming Assignments - 50%
- PA 1 - 5%
- PA 2 - 5%
- PA 3 - 10%
- PA 4 - 5%
- PA 5 - 10%
- PA 6 - 15%
- Midterm and Final - 50%
- Surprise Quizzes - 10% (Bonus!)
Schedule
Updated in an ongoing basis. In particular, we will cancel 2 classes due to the evening exam – the dates are not yet determined.
- Wk 1 (1/9): Administrative Details (Logistics Slides)
- No PSO the first week. PSOs start from Tuesday, 1/17
- Wk 1: (1/11 - 1/13): Program Structure Slides
- Address space. Structure of a Program. Text, Data, BSS, Stack Segments.
- Executable File Formats. ELF, COFF, a.out.
- Development Cycle, Compiling, Assembling, Linking. Static Libraries
- Loading a program, Runtime Linker, Shared Libraries.
- Programming Assignment (PA) 1 Project Writeup Lab Slides DUE TUESDAY, JAN 24, 11:00:00 AM
- C/C+ Programming and GDB
- Wk 2: (1/16) No Class
- There will be no classes for MLK, Jr day
- Wk 2: (1/18–1/20): Pointers/GDB
- Review of Pointers, double pointers, pointers to functions
- Use of a debugger to program in C and C++.
- Programming Assignment (PA) 2 Project Writeup Lab Slides DUE TUESDAY, JAN 31, 11:00:00 AM
- Shell Scripting
- Wk 3–4: (1/23 - 2/3): UNIX Commands UNIX Overview
- Scripting Languages. sh, bash, basic UNIX commands.
- File creation, read, write, close, file mode.
- Processes
- User/Kernel Level and System Calls
- IO redirection, pipes
- Programming Assignment (PA) 3 Project Writeup All parts slides DUE TUESDAY, FEB 28, 11:00:00 AM
- Lex/Yacc
- Process Creation/Execution/Redirection
- Wild cards, zombie elimination
- Wk 5–6: (2/6 - 2/17): System Calls
- Fork, wait, waitpid, signals.
- Directories, creating, directory list
- Programming Assignment (PA) 4 Project Writeup DUE TUESDAY, MARCH 6, 11:59:59 PM
- Introduction to Threads.
- Wk 7–9: (2/20 - 3/9): Threads
- Programming with Threads, thread creation.
- Race Conditions, Mutex locks.
- (3/2): MidTerm Review (Material cutoff through lecture on 2/29)
- (3/5) Midterm Exam: Monday, March 5th, 8p–10p. PHYS 112
- Wk 10 (3/10 - 3/18) NO CLASS
- Spring Break!
- Programming Assignment (PA) 5 Project Writeup Slides DUE TUESDAY, APRIL 3, 11:00:00 AM
- HTTP Web Server
- Wk 11–12 (3/19 - 3/30): Networking
- Socket Programming.
- Iterative and Concurrent Servers
- Programming Assignment (PA) 6 Project Writeup Slides DUE TUESDAY, APRIL 24, 11:59:59 PM
- Work in teams of up to 5 members Teams need to be selected by Tuesday, April 3rd
- VoIP client over Android Phones.
- Wk 13–14 (4/2–4/13) Software Engineering Slides
- Joel’s Test
- Source Control
- Refactoring
- Patterns
- Optimization
- Profiling
- Wk 15 (4/16–4/20) Memory / Virtual Memory Slides
- Memory allocation. Problems with memory allocation. Memory Leaks, Premature Frees, Memory Smashing, Double Frees.
- Wk 16: (4/23) Final Exam Review Practice Final
- 4/23 (Monday): Final Exam Review
- 4/25 (Wednesday): Guest Lecture (TBA)
- 4/27 (Friday): Class cancelled (make up from the evening midterm)
- Wk 17: (4/30–5/6) Exam Week
Course Policies
Late Policy
All assignments are due on the day and time posted. On programming assignments, students may have 8 free late days to spread across the programming assignments as they see fit. No other late submissions are accepted.
Ample time is given in advance for assignments, so excuses that you did not have enough will not be considered. Extraordinary circumstances will be considered at the discretion of the professor, contact him if you think these apply to you. If you have forseeable circumstantial problems, the best advise is to get the assignment done early. If that will not be possible, contact the professor.
Emergencies
In the event of a major campus emergency, course requirements, deadlines and grading percentages are subject to changes that may be necessitated by a revised semester calendar or other circumstances. Here are ways to get information about changes in this course. The course web page, the class mailing list, or by contacting the professor directly.
General policies
This course further adheres to the policies posted at http://spaf.cerias.purdue.edu/cpolicy.html. Please familiarize yourself with them.
Special note on academic dishonesty
In particular, note the section on academic honesty. Violations of this policy are treated as very significant, and will be dealt with both through punitive grading and notification to the Dean of Students.