Introduction to Computer Systems
Spring 2023
- Instructor: Dr. Marion Lang
- Email: langm@rhodes.edu
- Phone: (440) 666-2694
- Zoom ID: langma
- Schedule time: calendly.com/lang-cal
- Office: Briggs 213
- Office Hours: MWF 2-4:30
- Course website: 251.systems
- Course channel:
#comp251
Prerequisites
COMP142 is a required prerequisite. COMP241 is helpful, but not required.
Course Description and Objectives
The handbook description of the course is:
This course is an introduction to system-aware computer programming. Beginning with an overview of the fundamental elements and concepts that are common to all computer systems, including computer architecture, operating systems, compilers, and networks, students will learn how these affect the performance and behavior of computer programs. Additionally, students will learn a system-level programming language and set of tools for writing low-level programs at the operating system boundary. Students completing COMP251 will be prepared for advanced topics in systems, including operating system programming, parallel and distributed computing, and networking. Topics include: memory management and organization; caching and the memory hierarchy; system calls; network programming and I/O; processes, threads, synchronization, and concurrency; performance analysis and measurement; and debugging.
At the conclusion of this course you should be able to:
- navigate a command line environment, including using a text-based editor and command line interface programming and debugging toolchains.
- write programs in the C programming language.
- explain how software interacts with the operating system, and how the operating system interacts with hardware.
- implement concurrent programs using common threading libraries that do not have race conditions.
- design and implement performance-aware thread-safe libraries that expose flexible and robust APIs.
- design and implement communication protocols over sockets.
Expectations
You are expected to spend approximately 12 hours per week on this course (both per Department of Education guidelines as well as my expectations of the work required). This class will involve a lot of work, but you will get a lot out of it; education is transactional.
I know that COVID has recalibrated our expectations for how classes work. Even though COVID is not “over” by any stretch of the imagination, we will attempt to run this class as if it were pre-COVID: attendance is necessary. You are expected to attend class and participate in the class. I will not record lectures, nor will I make the course available asynchronously. If you have been exposed to COVID or test positive for COVID, you must isolate–regardless of college policies. Do not come to class. Let me know before you miss class, and we can work something out.
Grading
Percent Contribution | Description |
---|---|
40 | Programming labs and exercises |
20 | Assignments and participation |
40 | Exams (weights TBD, but the syllabus will be updated) |
Course Format
- This class is a programming-heavy course. Over the course of the semester, you will write several large programs or program components in a systems programming language (C). There will be 6-10 of these large assignments (labs).
- At the same time, you will have smaller, regular work assigned. These will include small programming exercises in addition to writing assignments and readings (assignments).
- You are expected to come to class, office hours, etc. You are expected to do readings before class and take part in discussions. It is important that you participate (i.e., take an active role) in the course.
- We will have three exams: two midterms and a final. The midterms will be scheduled at least 1.5 weeks in advance. The final will take place at the regularly-scheduled final exam slot. All exams are closed-book and closed-notes.
Academic Integrity
All work turned in for this course is to be completed in accordance with Rhodes’ Honor Code. All work done for homework, programming projects, and exams is expected to be your own. Collaboration is an important component to successfully learning the material and completing assignments in this course. You may discuss homework problems with your classmates, but the work you turn in must be your own.
Examples of collaboration:
- Whiteboarding, drawing diagrams with others.
- Discussing the C libraries and their APIs.
- Talking about high-level algorithms.
- Working together to understand tools (e.g., gdb, git and GitHub, command-line tools, etc.).
- Talking about program structure, how you found a bug, etc.
- Looking at StackOverflow posts or other discussion forums for help with a compiler error or logic bug.
Examples of plagiarism:
- Copying code.
- Looking at another student’s solution and adapting pieces of it into your own.
- Taking code directly from the internet and using it in your project.
- Looking for similar assignments/projects and copying solutions.
In general, any submitted solutions to programming exercises not wholly written by yourself is considered plagiarism. Any and all plagiarism will be reported to Honor Council and will result in the grade of F for the course.
A note about ML tools (GitHub copilot, ChatGPT, etc.): These tools largely produce garbage. ChatGPT, in particular, scored the worst on my final exam last semester. Regardless: using these tools to solve class assignments is plagiarism.
These tools, themselves, are (in my opinion) intellectually dishonest. Consider this lawsuit; the training data used by these tools is copyright work of its creators. Or, consider this WaPo article discussing the ethics of Lensa’s avatars.
All ML tools do is produce statistically-probable output based on ingesting human-produced input. There is no originality–the tools themselves simply output fragments of others’ work.
Late work
Physical homework assignments are due in class the day that they are due. Lab and programming assignments are due at midnight on the day that they are due.
You may turn in work after the deadline for partial credit, with a penalty that increases day-over-day.
I will not accept work more than 3 days after a deadline unless you have spoken with me about why you need an extension.
Diversity and Inclusion
It is extremely important to me that we are able to form a sense of community in this class. Since the course will stretch you at times, it will be important for you to be supported. Part of this support will come from me, another part from the tutors, but another part should come from your peers.
Our community must be open, welcoming, and safe for all students. Any action that causes someone to feel unwelcome or unsafe is unacceptable–including my own actions. There is a feedback form that you can fill out if there is anything that makes you feel uncomfortable or biased against, whether as a result of an action by your peers or by me.
A diverse learning community is a necessary element of a liberal arts education, for self understanding is dependent upon the understanding of others. We are committed to fostering a community in which diversity is valued and welcomed. To that end any discrimination or harassment on the basis of race, gender, color, age, religion, disability, sexual orientation, gender identity or expression, genetic information, and national or ethnic origin, will not be tolerated in the classroom.
We are committed to providing an open learning environment. Freedom of thought, a civil exchange of ideas, and an appreciation of diverse perspectives are fundamental characteristics of a community that is committed to critical inquiry. To promote such an academic and social environment we expect integrity and honesty in our relationships with each other and openness to learning about and experiencing cultural diversity. We believe that these qualities are crucial to fostering social and intellectual maturity and personal growth.
Intellectual maturity also requires individual struggle with unfamiliar ideas. We recognize that our views and convictions will be challenged, and we expect this challenge to take place in a climate of openmindedness and mutual respect.
Classroom etiquette
The classroom environment will be informal. You should feel free to speak up without raising your hand, to crack jokes, etc. Being informal does not mean being unprofessional, though. I have some very basic rules. They really boil down to don’t be rude.
- If you are going to spend class on your phone or your laptop, just don’t come.
- No earbuds on during class (exams are ok).
- Don’t take pictures of the board or projector until you clearly get acknowledgement from me (a nod is fine).
- Don’t talk over me or your peers.
- Don’t talk to your peers for an extended period while others are talking.
Accommodations
Per the student services office, please inform me as soon as possible if you require course accommodations. I am happy to support you in any way that I can in my course.
If your accommodations specify extra time on exams, please send me an email/Slack message/etc. before a scheduled exam. This is to both remind me of anything that I need to do to accommodate you and to start a conversation between us about the manner in which you would like to take the exam.
Sexual Misconduct Disclosure
I will do my best to help any student who comes to me with non-course-related concerns. Please keep in mind, however, that all faculty are required by policy to share knowledge of sexual assault, dating/domestic violence, sexual exploitation, stalking, sexual harassment and sex/gender discrimination with the Title IX Coordinator. For more information about Rhodes’ sexual misconduct policy or to make a report please see www.rhodes.edu/titleix.
I reserve the right to alter this syllabus.