CSI 402: Systems Programming (Spring 2018)
- Time/Location
- Tuesday/Thursday 2:45pm–4:05pm (ES-241)
- Instructor
- Amir Masoumzadeh (amasoumzadeh@albany.edu)
- Office Hours: Wednesday 2:30pm–4:30pm (UAB 422), or by appointment
- Teaching Assistant
- Younes Karimi (ykarimi@albany.edu)
- Office Hours: Monday 10am–12pm (UAB 410B), or by appointment
- Teaching Assistant
- Muralidhar Gopinath (mgopinath@albany.edu)
- Office Hours: Friday 2pm–4pm (UAB 410B), or by appointment
Course Overview
This course introduces students to the programming aspects of operating systems. Topics covered include implementation of storage management, resource allocation, multi–processing, scheduling, synchronization, inter–process communication, and terminal I/O. Programming assignments are designed to enhance subject understanding, problem solving, and programming skills through hands–on experience on real–life–like problems.
Learning Goals for Students
Students who successfully complete this course will be able to
- understand and articulate what system software does
- code general-purpose C programs
- use the many tools Linux provides including commands and system calls
- understand and talk about system details (e.g., be able to read research papers in systems area)
Prerequisites
ICSI/ICEN 333 or equivalent with a grade of at least C.
You are expected to have a good knowledge of programming basics, C and Assembly programming.
Readings
There is no single textbook that covers everything discussed in this course. Therefore, we rely on multiple online resources (books, articles, and tutorials) which are available publicly or via the University’s network. You are required to read each session’s readings listed on the schedule before attending the class.
Communications and Submissions
The course syllabus and schedule is available on the course webpage.
Most of the tasks in this class will be handled via GitHub including
distribution of notes and homework assignments, assignment submission, and feedback.
We will also use Blackboard for communication and for your grades.
Assessment and Grading
- Homework Assignments
- These will be mainly programming assignments. There will be about 8 homework assignments during the semester.
- In-Class Activities and Performance
- A major component of your participation in the course will be involvement in class activities and discussions (both individually and in a team). Because your work in your teams is crucial to your success in this course as well as your teammates, you will be held accountable for your contribution to your team. Your team members will give you feedback on your performance during the semester.
- Exams
- There will be 4 exams in total. The first 3 exams each will be on one of the Modules #1–#3. The last exam, during the finals exam week, will be 50% on Module #4 and 50% cumulative on all modules.
- Final Grade
- Final grade will be a weighted combination of 35% homework assignments, 15% in-class assignments, and 50% exams.
Schedule
The following schedule is tentative and will be regularly updated.
It is your responsibility to check the schedule regularly.
means required reading. means optional reading.
Date |
Topic/Reading |
Assignment |
Module #0: Introduction |
Jan 23
|
Course Introduction
|
|
Jan 25
|
Git
|
hw01 due Jan.30
|
Module #1: Shell/Bash |
Jan 30
|
Shell Basics
|
|
Feb 01
|
Using the Shell
|
hw02 due Feb.5
|
Feb 06
|
Scripting the Shell
|
|
Feb 08
|
Filtering Text
|
hw03 due Feb.11
|
Feb 13
|
Exam #1
|
|
Module #2: C Programming |
Feb 15
|
Basics: Types, Operations, Control Structures. Complex Data Types: Strings, Arrays, Pointers, etc. Functions
|
|
Feb 20
|
Basics (cont.)
|
|
Feb 22
|
Multi-File Programs, GCC & Make
|
hw04 due Feb.27
|
Feb 27
|
Debugging
|
|
Mar 01
|
Memory, Valgrind
|
hw05 due Mar.4
|
Mar 06
|
Exam #2
|
|
Module #3: POSIX/Linux Programming |
Mar 08
|
System Calls
|
|
Mar 13
|
Spring Break
|
|
Mar 15
|
Spring Break
|
|
Mar 20
|
Review of advanced data structures in C (hash tables, binary search trees, etc.)
|
|
Mar 22
|
Files, I/O
|
|
Mar 27
|
Files, I/O (cont.)
|
|
Mar 29
|
Processes & IPC
|
|
Apr 03
|
Processes & IPC (cont.)
|
|
Apr 05
|
Processes & IPC (cont.)
|
hw06 due Apr.5
|
Apr 10
|
Class canceled
|
|
Apr 12
|
Networking
|
hw07 due Apr.13
|
Apr 17
|
Networking (cont.)
|
|
Apr 19
|
Exam #3
|
|
Module #4: Some Fundamental System Programs |
Apr 24
|
Compilers
|
|
Apr 26
|
Assemblers
|
|
May 01
|
Linkers & Loaders
|
|
Module #5: Misc./Advanced Topics |
May 03
|
Rust
|
hw08 due May 7
|
May 08
|
Review
|
|
May 10
|
Reading Day
|
|
May 11
|
Final Exam (10:30am-12:30pm in same classroom)
|
|
Policies
- Academic Integrity
- It is every student’s responsibility to become familiar with the standards of academic integrity at the University. Claims of ignorance, of unintentional error, or of academic or personal pressures are not sufficient reasons for violations of academic integrity. Any incident of academic dishonesty can result in (i) no credit for the affected assignment, (ii) report to the appropriate University authorities (e.g., Dean of Undergraduate Education or Graduate Studies), and/or (iii) a failing grade (E) for the course.
For all assignments and papers, make sure to do your own work, except where collaboration is explicitly permitted or required. Also, make sure that you properly cite any resource from which you borrow ideas and that you clearly distinguish them from your contributions.
- Makeup Policy
- There are generally no makeup opportunities for missed activities and assignments except in extenuating circumstances. Since there will be occasions in your life when missing a class meeting or a deadline is simply unavoidable, this course has a few built-in safety valves.
- You can submit your assignment up to 2 days late subjecting to 10% penalty per day late. No assignment will be accepted after 2 days past the deadline. Important Note: For late submissions, you must email (instructor and TAs) once before the deadline informing us about the late submission and once immediately after your submission so that we can grade it for you.
- The average of the best 90% of your in-class activities will count towards your grade.
- If you become seriously ill during the semester, or become derailed by unforeseeable life problems, and have to miss so many assignments that it will ruin your grade, schedule a meeting with me in order to make arrangements for you to drop the course to save your grade point average. Do not wait until it is too late to see me when you get in trouble.
- Use of Electronic Devices
- Computers or other electronic devices may be only used during class for note-taking or other class-related activities. You are not allowed to perform any unrelated task during class.
- Students with Disabilities
- Reasonable accommodation will be provided for students with documented disabilities. If you believe you have a disability requiring accommodation in this class, please notify the Disability Resource Center (Campus Center 130, 518-442-5490). That office will provide me with verification of your disability, and will recommend appropriate accommodations. In general, it is your responsibility to contact me at least one week before the relevant activity to make arrangements.