Course Syllabus – Systems Programming
CS 521 ⋅ Spring 2025 ⋅ 4 Units
Systems software provides a layer of abstraction above the hardware that facilitates higher-level applications. This course provides an overview of computer systems, including low-level information representation, systems-oriented programming languages, explicit memory management, operating system interfaces, bitwise operations, concurrency, and network programming.
Course Information
This course will be offered in a hybrid format, with on-campus meetings on Monday and Wednesday, and an online lecture on Friday via a live Zoom stream. On-campus sessions will focus on hands-on, team-based learning and one-on-one help, while the Friday lecture will cover new material with live Q&A.
- On-Campus Lecture: M, W ⋅ 10:30 – 11:35am ⋅ ED 103
- Remote Lecture: F ⋅ 10:30 – 11:35am ⋅ Zoom Live Stream
Instructor: Matthew Malensek
mmalensek@usfca.edu
Office Hours: M, W 11:45am – 12:45pm ⋅ HR 407B
TA: Athene Marston
Office Hours: Th 5:00 – 6:30pm ⋅ HR CS Labs
Prerequisites
- CS 514 with a grade of B or better
- Math 501 with a grade of B or better
Texts/Materials
- The C Programming Language, 2nd edition. (A.K.A. “K&R") Brian W. Kernighan and Dennis M. Ritchie. Prentice-Hall, 1988.
- The Rust Programming Language, 2nd Edition. Steve Klabnik and Carol Nichols. No Starch Press, 2023.
Learning Outcomes
After completing the course, students will be able to:
- Develop and debug software in a systems programming language
- Understand low-level information representation
- Write concurrent software
- Evaluate performance of systems software
- Work effectively from the UNIX command line
Each of these learning outcomes will be evaluated via quizzes, labs, and projects.
Grading and Assessment
The course will be graded on an A-F basis. The grade distribution is:
- Labs: 25%
- Projects: 25%
- Quizzes: 50%
- Team: 5%
- Individual: 45%
Grades will be assigned as follows:
Score | Grade |
---|---|
100 – 93 | A |
92 – 90 | A- |
89 – 87 | B+ |
86 – 83 | B |
82 – 80 | B- |
79 – 77 | C+ |
76 – 73 | C |
72 – 70 | C- |
69 – 67 | D+ |
66 – 63 | D |
62 – 60 | D- |
59 – 0 | F |
This scale is subject to change; scoring in the ranges above guarantees you will receive at least the grade listed.
Labs: There will be several lab assignments throughout the semester. These assignments are designed to give you a chance to practice what you’ve learned and get feedback on your progress.
Projects: These are larger-scale assignments that integrate what you have learned from the labs and in-class exercises.
Quizzes: Your knowledge of the concepts covered in class will be evaluated via quizzes administered roughly once every 3 weeks. These quizzes are intended to make sure you’re not only learning the programming concepts from class, but also the theory and reasoning behind why systems software works the way it does. Each quiz will take around 10-15 minutes to complete. While they are short, quizzes constitute a large percentage of your course grade, so be sure to prepare by reviewing course material.
Quizzes consist of two phases: individual and team, with a separate score for each. During the team phase of the quiz, you can discuss the questions with your teammates and come to a consensus on the answers. The individual and team portions of the quiz are turned in separately.
Your lowest quiz grade for the semester will be dropped (including a missed quiz).
Make-up quizzes are not given unless arranged at least one week in advance.
Final Exam: This course does not have a final exam. Instead, there will be a cumulative final quiz that covers slightly more material than usual. Since the lowest quiz score is dropped, you may not need to take the final quiz if you did well on the other quizzes throughout the semester.
Grading Policy:
- You are responsible for the code you turn in. If you get help from an external source, you must provide attribution and fully understand what you are submitting.
- Do not cheat. Review the Honor Code, and if in doubt about whether or not something is cheating, ask the professor.
- The course staff will run cheat detection software that includes past assignments.
- “Collaboration” that involves sharing code/solutions is considered cheating.
- If you cheat, you will get a 0 on the assignment or an F in the class.
- Submit code via GitHub. Commit your changes frequently as you work on the assignments.
- Grading will be carried out on the VMs we set up in class. If your code does not compile or run on your VM, you receive an automatic 0.
Late Policy:
- Due dates are posted on the course schedule page. Assignments are due at 11:59pm on the due date.
- Makeup quizzes will not be administered unless arranged at least one week in advance.
- Late lab assignments or projects may be turned in up to one week (7 days) late for full credit; late submissions beyond one week will not be accepted.
Classroom Conduct
You are here to learn. Be professional and courteous toward your peers, and help create a learning environment that supports diverse thinking, experiences, perspectives, and identities. If you need to use an electronic device during a lecture, do so in a way that doesn’t distract others. And most importantly, be excellent to each other.
Important Dates
- January 21: Classes/Late Registration Begin
- January 27: Last day to add classes
- February 7: Census Date (last day to drop classes with a refund)
- February 17: No class, Presidents' Day
- March 10–14: No class, Spring Break
- April 7: Last day to drop classes or withdraw
- April 17: Easter Holiday begins at 4:00pm
- April 18: No class, Easter
- May 8: Last day of class
- May 9: Study/Review Day
Students with Disabilities
The University of San Francisco is committed to providing equal access to students with disabilities. If you are a student with a disability, or if you think you may have a disability, please contact Student Disability Services (SDS) at sds@usfca.edu or 415 422-2613, to speak with a disability specialist. (All communication with SDS is private and confidential.) If you are eligible for accommodations, please request that your accommodation letter be sent to me as soon as possible; students are encouraged to contact SDS at the beginning of the semester, as accommodations are not retroactive. Once I have been notified by SDS of your accommodations we can discuss your accommodations and ensure your access to this class or clinical setting. For more information please visit the SDS website: https://www.usfca.edu/student-disability-services.
Behavioral Expectations
All students are expected to behave in accordance with the Student Conduct Code and other University policies (see http://www.usfca.edu/fogcutter/). Students whose behavior is disruptive or who fail to comply with the instructor may be dismissed from the class for the remainder of the class period and may need to meet with the instructor or Dean prior to returning to the next class period. If necessary, referrals may also be made to the Student Conduct process for violations of the Student Conduct Code.
Academic Integrity
As a Jesuit institution committed to cura personalis – the care and education of the whole person – USF has an obligation to embody and foster the values of honesty and integrity. USF upholds the standards of honesty and integrity from all members of the academic community. All students are expected to know and adhere to the University’s Honor Code. You can find the full text of the code online at http://myusf.usfca.edu/academic-integrity/. The policy covers:
- Plagiarism – intentionally or unintentionally representing the words or ideas of another person as your own; failure to properly cite references; manufacturing references.
- Working with another person when independent work is required.
- Submission of the same paper in more than one course without the specific permission of each instructor.
- Submitting a paper written by another person or obtained from the Internet.
Counseling and Psychological Services (CAPS)
CAPS’ diverse staff offers brief individual, couple, and group counseling to student members of our community. CAPS services are confidential and free of charge. Call (415) 422-6352 for an initial consultation appointment. Telephone consultation through CAPS After Hours is available Monday - Friday from 5:00 p.m. to 8:30 a.m., 24 hours during weekends and holidays; call the above number and press 2. Further information can be found at https://myusf.usfca.edu/student-health-safety/caps.
Confidentiality, Mandatory Reporting, and Sexual Assault
As instructors, one of our responsibilities is to help create a safe learning environment on our campus. We also have a mandatory reporting responsibility related to our role as faculty. We are required to share information regarding sexual misconduct or information about a crime that may have occurred on USF’s campus with the University. Here are some useful resources related to sexual misconduct:
- To report any sexual misconduct, students may visit the Title IX coordinator (UC 5th floor) or see many other options by visiting usfca.edu/student_life/safer.
- Students may speak to someone confidentially or report a sexual assault confidentially by contacting Counseling and Psychological Services at (415) 422-6352.
- To find out more about reporting a sexual assault at USF, visit USFs Callisto website at: usfca.callistocampus.org.
- For an off-campus resource, contact San Francisco Women Against Rape (SFWAR) (415) 647-7273 (sfwar.org).