CSI 402: Systems Programming (Fall 2019)

Time/Location
Wednesday 5:45pm–8:35pm (BB-B008)
Instructor
Amir Masoumzadeh (amasoumzadeh@albany.edu)
  • Office Hours: Friday 10am–12pm (UAB 422), or by appointment
Teaching Assistant
Ravi Sood (rsood@albany.edu)
  • Office Hours: Monday/Tuesday 4:30pm–5:30pm (Main library group study area), 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

Prerequisites

ICSI/ICEN 333 or equivalent with a grade of at least C.

You are expected to have a good understanding of programming basics, C, and Assembly.

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. Schedule of readings is given in the course schedule.

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 course GitHub organization including distribution of notes and homework assignments, assignment submission, and feedback. We will also use Blackboard for communication and for your grades.

If you have general questions about an assignment you should post it as an issue in the repository corresponding to the assignment. If you have a question about your current solution and want us to take a look, you should create an issue in your individual assignment repository instead. Include a screenshot of your runtime environment as well as references to places in your code that you want us to check.

Your assignments will be automatically collected from your GitHub repositories at the time of the deadline. This helps you keep working and improving your submissions up until the deadline. Just make sure that you continuously keep your GitHub repository synced with your local version.

Assessment and Grading

The course is A-E graded based on the following categories and corresponding weights:

Individual Homework Assignments (30%)
There will be about 6 programming assignments. Note that assignments may differ in terms of required level of effort and allocated points.
In-Class Activities and Performance (10%)
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.
Team Project (20%)
Students should work in teams of up to 3 to develop an application that ties together many of the concepts taught in class throughout the semester. Schedule of deliveries will be given in the course schedule.
Exams (40%)
There will be a midterm exam (on Modules #1 and #2) and a final exam (on Module #3). Final exam is non-cumulative. Each exam is worth 20% of your final grade.

General Education Competency

This course provides several opportunities for students to develop advanced writing, critical thinking, information literacy, and oral communication skills. Specifically, (i) students are required to provide proper documentation of their project in English using complete sentences, observing the usual rules of grammar, spelling, and punctuation, (ii) frequent interactive discussions in a variety of communication contexts (i.e., students–instructor and student–student interactions in teams) stimulate critical thinking, and promote oral communication skills, and (iii) students learn various ways in which information is organized and structured and the process of finding and using information. By examining information from resources available on the Internet, students learn to evaluate the quality of information and to use information ethically and professionally.

Schedule

The following schedule is tentative and will be regularly updated. It is your responsibility to check the schedule regularly.

Note: “+” indicates an optional reading.

  Date   Topic/Reading Assignment Due
Module #1: Shell/Git
Aug 28 Course Overview, Required Setup for Assignments, Git hw00 due Aug.28 (on Blackboard)
Sep 04 Unix File Structure & Permissions, Shell Basics, Redirection, Expansion, Processes, Environment hw01 due Sep.04
Sep 11 Scripting the Shell, File Search, Text Processing
Module #2: C Programming
Sep 18 C Types, Operations, Control Structures, Complex Data Types, Functions, Advanced Pointer Concepts, Command Line Arguments hw02 due Sep.17
Sep 25 C I/O, Multi-File Programs, GCC, Make hw03 due Sep.24
Oct 02 Debugging, Compiling, Assembling, Linking Project Team Formation due Oct.1, hw04 due Oct.4
Oct 09 Midterm Exam
Module #3: POSIX/Linux Programming
Oct 16 System Calls, File I/O
Oct 23 Processes, Executing Programs hw05 due Oct.22
Oct 30 Signals, Pipes, FIFOs
Nov 06 Threads Project Progress Report due Nov.08
Nov 13 Networking
Module #4: Misc./Advanced Topics
Nov 20 Rust, Recap & Review
Nov 27 Thanksgiving Break
Dec 04 Project Submission & Demos
Dec 11 Final Exam (5:45-7:45)

Policies

No Late Submission
Assignments will be released about a week before their due date. You are highly recommended to study an assignment as soon as it becomes available. There will be ample opportunities to benefit from office hours and communication with me and the TAs before the due date. Assignment are due 11:59pm on the day specified in the homework. Submissions after due time will receive no points.
Review of Grades
Any issue regarding your grade in a specific assignment must be posted as an GitHub issue in your assignment repository no later than 5 business days after posting day of the grades. There will be no re-grading after the 5-day period has passed.

You can also review your graded midterm exam paper either after class or in the office hours for a 5-day period after grades are announced. It is not possible to re-grade your paper after the end of that period.

Attending Lectures
Attendance will be taken in lectures. Your absence will be excused if approved by Student Health Services (see medical excuse policy). You should notify the instructor of your absence due to religious observance in advance. Note that even though some of the material covered in class may not appear on the lecture slides, you are responsible for all materials covered in lectures. It is your responsibility to find out the material covered in a lecture you missed.

Please do not disrupt the class by entering late or leaving early without instructor’s approval.

Attending Exams
Midterm exam is given in regular hours of the class. Exam dates are given in the course schedule, and there will be usually reminders about them in the lectures. Makeup exams will be given only for valid and verifiable extenuating circumstances (e.g., a major medical situation). It is the student’s responsibility to contact the instructor ahead of time and arrange to take a makeup exam at an alternate date/time. Makeup exams are not guaranteed and will be generally harder than the regular exams.
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 for the course.

For all assignments and papers, you must submit your own work, except where collaboration is explicitly permitted or required. Also, you must properly cite any resources from which you borrow ideas and clearly distinguish them from your contributions.

Use of Electronic Devices
Computers or other electronic devices may be only used during class for note-taking, in-class exercises, 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.