CSSE132 - Introduction to Systems Programming
Rose-Hulman Institute of Technology
Computer Science and Software Engineering Department
Fall 2024-2025
Description
Provides students with understanding of computer system level issues and their impact on the design and use of computer systems. Students will study low-level programming (assembly) and memory operations, representation of various types of data and programs in memory, and resource/efficiency trade-offs. System requirements such as resource management, security, communication and synchronization are studied and basic systems tools for these tasks are implemented. Course topics will be explored using a variety of hands-on assignments and projects.
Prerequisites
CSSE 120
Course Outcomes
Students who successfully complete this course should be able to:
Describe the functions of common computer system hardware elements including CPU, memory hierarchy and input/output devices.
Implement and analyze software in the C programming langauge using:
- Standard C data types
- Binary arithmetic, boolean and logical operations
- Functions
- Arrays
- C Strings
- Pointers and Pointer Arithmetic (including Function Pointers)
- Static and Dynamic memory allocation techniques
- User and file input/output
- Command-Line arguments
Discuss why certain abilities such as information representation, network communication, input/output, and security require support from multiple layers of a computer system.
Design and implement simple IP-based network applications using socket level programming and C.
Demonstrate ability to perform tasks like these in a variety of operating environments including the Linux system environment:
- compile software
- debug software
- secure files
- leverage a version control system
- manipulate data
- command-line (shell) navigation and manipulation
Schedule
The course schedule page has the topics and due dates for the course materials. Please bookmark that page.
Instructors
Section | Instructor | Office | |
1 | Nate Chenette | Moench D219A | chenett1@rose-hulman.edu |
2 | Olga Scrivner | Moench F204 | scrivner@rose-hulman.edu |
Textbooks
- Recommended:
- BO and PP: Computer Systems: A Programmer's Perspective, 3rd Edition.
Randal E. Bryant and David R. O'Hallaron.
Pearson, 2016.
(errata)
All Chapters and Sections listed on the schedule without a source are this book: Bryant and O'Hallaron (or BO on the schedule). Practice problems taken from this book are denoted PP on the schedule, and this text contains the solutions for self-assessment. - PH: Computer Organization and Design, 5th edition.
D. A. Patterson and J. L. Hennessy.
Morgan Kaufmann, 2013.
(Known errors)
Chapters and Sections from this text are denoted PH on the schedule. - KR: The C Programming Language, 2nd Edition. Brian W. Kernighan and Dennis M. Ritchie.
Prentice Hall, 1988.
Chapters and Sections from this text are denoted KR on the schedule.
- BO and PP: Computer Systems: A Programmer's Perspective, 3rd Edition.
Randal E. Bryant and David R. O'Hallaron.
Pearson, 2016.
(errata)
Homework
The homework assignments are listed on the class schedule. Homework is due by 11:59pm on the stated date. All assignments, written and coding, should be submitted to Gradescope (see link from Moodle page.)
Solutions will generally be available the day after homework is due. Therefore, no late homework submissions are accepted. Solutions to the homework should be presented using good style. Your name should appear at the top of each page. Be sure to state any assumptions that you make to solve the problem. Above all it must be legible--if the graders can't read it, you won't get credit.
Quizzes
Many classes will involve in-class quizzes, which are used like worksheets. Quiz solutions will be regularly posted. Quizzes will not generally be collected for credit---their main purpose is to support student learning. However, completing quizzes is one element of your Class Participation grade.
Class participation
A small amount of the overall grade is for class participation. Part of this is class attendance, which is required. Some amount of this grade will be determined subjectively by the instructor: to earn credit for this category, students should arrive on time to class in a state to learn, actively engage in class time, and generally be a good "citizen" of CSSE132.
Laboratory Assignments
There are several labs listed on the on the schedule. The labs utilize Linux, C, assembly language. Completed labs are submitted via in-person verification and GradeScope. When done in partners, both of you must be able to demonstrate your solutions.
Exams
There will be two midterm exams and a final exam.
Grading
You must earn a passing (60%) exam average (weighted by the exams' weights) to pass the course.
You must earn at least a C (70%) average on exams to earn a C or better in the course.
Assuming the above "exam average" conditions are met, the overall grade is computed according to the following weights.
Class participation | 5% |
Homework | 25% |
Labs | 20% |
Exams | 50% |
Generally, 90-100% is an A, 85-89% is a B+, etc.
The above is a guideline that we typically follow. Please understand that it is not a promise. We will do our best to conform to the institute-wide grading policy described in the Grade Descriptions section of the registrar's web page. As you read it, note in particular that phrase "thorough competence to do excellent work" appears in the description of the "B" grade (the standard for "A" is even higher), and it further states that "B" and "B+" will not be given for mere compliance with the minimum essential standards of the course.
Collaboration
Collaboration is encouraged on homework and laboratories. It is prohibited on exams.
When you collaborate, you must:
- properly credit your collaborators
- clearly indicate the extent of the collaboration
- understand the work as well as if it were your own and are able to explain it to your instructor
Working out a homework solution as a group can be acceptable collaboration if you follow the guidelines above. Each individual is responsible for understanding the entire solution. For homework, this means that once a group solution has been achieved, each collaborator must rework the problem and write up the solution independently.
If you are ever in doubt about whether some specific situation violates the policy, the best approach is to discuss it with your instructor beforehand. This is a very serious matter that we do not take lightly. Nor should you.
You should never look at another student's code to get ideas of how to write your own code. Beginning the process of producing your own solution with an electronic copy of work done by other students is never appropriate.
Copying is not collaboration.
Course Academic Integrity Policy
Plagiarism (where a student solution to an exam or assignment was copied from another student's solution, past or present, or any solution that is posted anywhere) or other cheating will result in a score of -100% for the assignment or exam. Egregious cases will result in a grade of "F" for the course. Furthermore, such cases will also be reported to the Department Head and Dean of Students, as required by the Institute policy, to be added to the student's record and so discourage repeat offenses. More importantly, such dishonesty steals your own self-esteem and your opportunity to learn. So don't cheat!
It is expected that any work submitted for assessment represents the intellectual work of the individual(s) submitting the work. Any attempt to pass off the intellectual work of another (including the work generated by Large Language Models like ChatGPT) as their own or without proper attribution is an example of academic misconduct and is subject to the penalties described in the Rose-Hulman Academic Rules and Procedures and Student Handbook documents.