SLU logo

CSCI 2510: Principles of Computer Systems - Class Page

Fall 2024

Instructor David Ferry, Homepage
Course Web Site http://cs.slu.edu/~dferry/courses/csci2510/
Course meeting times Monday, Wednesday, & Friday from 1:10 pm - 2:00 pm, Ritter Hall 314
Midterm exam
October 4th, in class
Final exam
Wednesday, Dec. 11th, 12:00 PM - 1:50 PM
Office hours See my schedule
Contact You may contact me in person during office hours or during class time, or you may email me at dferry@slu.edu. I am also available to meet by appointment, see my schedule.

Contents
  1. Course Description
  2. Prerequisites
  3. Lecture
  4. Studios
  5. Labs
  6. Course Schedule
  7. SLU Git Repository
  8. Textbooks and Other Resources
  9. Grading
  10. Attendance

Course Description

Modern software architects and engineers care every bit as much about where and how software executes as they do about what the software does. Modern systems are expected to be performant, scalable, efficient, maintainable, secure, and more. These are challenging problems, because they are less concerned with what the system does, and much more concerned about how a system does it.

Most requirements for software systems are written as a set of of functional constraints in the sense of a mathematical function. A program is seen as a tool for transforming inputs into outputs, and the program is the function that accomplishes that transformation. However, the challenges listed above are non-functional constraints and cannot be expressed in such a manner. If they were, our life would be easier! We could simply write the bit of code that ensures our system is scalable, and then we'd be done. Instead, verifying that a system is scalable requires checking that the entire system is scalable- which is not only a global qualification, but an entirely non-obvious one at that.

Course "Big Questions"

The five elements of this course are lectures, studios, quizzes, labs, and exams. Studios are short assignments intended to be completed primarily within class time and to augment lecture topics. Labs are longer assignments that will ask students to apply and analyze system mechanisms. Expect a lab assignment approximately every two weeks.

Topical outline:


Course Activities

Readings- We will do readings out of course texts as well as from other sources. These are to be completed by class on the day they are listed on the schedule, as they may form the basis for the activities in class that day.

In-Class Participation- Many class periods I will have you attempt smaller or larger problem sets or programming challenges. These will be submitted via Canvas and must be submitted by the end of class in order to recieve credit.

Studios- Computer Science is an eminently practical discipline, and studios are daily assignments intended to complement and reinforce class material with daily practice.

Labs- A major experiential learning component of this course is for each student to do substantial programming activities themselves. A technical understanding of how distributed medium-scale systems are implemented will show students for themselves how such systems really work at a technical level.


Catalog Description: An exploration of computing systems with a strong emphasis on how systems interact with each other. Topics will include concurrent and parallel programming, network communication, and computer security. In addition to foundational knowledge, the course includes simulating, benchmarking, and testing such systems.


Prerequisites

Please see the instructor if you're uncertain about your preparation for this course.


Course Schedule

A tentative course schedule is below. Note that this schedule may change over the course of the semester. When changes occur, students will be given enough advance notice so that readings and other preparation may be accommodated.
Date Day Topic Readings Studios Labs
Aug 21 Wed Introduction
Syllabus
Make sure you can login for next time
Aug 23 Fri Intro to Systems Programming in C Studio 01
Aug 26 Mon Intro to Hopper, Git, and Github
Aug 28 Wed C Programming
Arrays and Strings in C
Pointers
Studio 02
Aug 30 Fri Sick Day
Sep 02 Mon Labor Day - No Class
Sep 04 Wed C Programming
File Input and Output
Studio 03
Studio 1 Due
Lab 1 Assigned
Sep 06 Fri Lab 1 Discussion
(demo code from class)
Studio 04
Studio 2 Due
Sep 09 Mon System Calls
Sep 11 Wed System Calls - Continued Studio 3 Due
Sep 13 Fri Processes Studio 4 Due Lab 1 Due
Sep 16 Mon fork(), exec(), wait(),
Process Creation
Studio 5 Lab 2
Sep 18 Wed Lab 2 Discussion Studio 6
Sep 20 Fri Pipes, stdin, stdout
fork_demo.c
pipe_demo.c
strtok_demo.c
Studio 7
Sep 23 Mon File descriptors, dup2()
dup2_demo.c
Studio 5 Due
Sep 25 Wed Wellness Day - No Class
Sep 27 Fri
Sep 30 Mon
Oct 02 Wed Exam Review Studio 8 Due
Studio 9 Due
Oct 04 Fri Midterm Exam
Oct 07 Mon Threads, Concurrent Programming Studio 8
Studio 6 Due
Oct 09 Wed Pthreads Interface
threads.c
Studio 9
Studio 7 Due
Lab 2 Due
Oct 11 Fri Lab 3 Discussion
crypt_demo.c
Lab 3 Assigned
Oct 14 Mon Sick Day
Oct 16 Wed Sick Day
Oct 18 Fri Lab 3 Discussion
Oct 21 Mon Race Conditions
(PDF)
Studio 10
Oct 23 Wed Locks, Mutexes, Atomicity Studio 11
Oct 25 Fri Fall Break - No Class
Oct 28 Mon Deadlock, Deadlock Detection Studio 10 Due
Oct 30 Wed Parallel Algorithms,
Work and Critical Path
Studio 11 Due Lab 3 Due
Nov 01 Fri Parallel Matrix-Multiply
Parallel Array-Sum
(Associative Reduce)
Nov 04 Mon C++ Threads and Atomics,
OpenMP
OpenMP Studio
Nov 06 Wed
Nov 08 Fri Lab 4 Discussion OpenMP Studio Due Lab 4
Nov 11 Mon OSI Model of Networking
Nov 13 Wed Physical and Data-Link Layers
Nov 15 Fri Network Layer
Nov 18 Mon Transport Layer
Nov 20 Wed Sockets Demo
server.c
client.c
Lab 4 Due
Nov 22 Fri Lab 5 Discussion Linux Sockets Lab 5 Assigned
Nov 25 Mon Session, Presentation, and Application Layers Fileserver
Nov 27 Wed Thanksgiving - No Class
Nov 29 Fri Thanksgiving - No Class
Dec 02 Mon Security Concerns - CIA
Dec 04 Wed Permission Domains and Permission Management
Dec 06 Fri Bell-LaPadula and Biba Models for security Lab 5 Due
Dec 11th Wednesday Final Exam

SLU Git Repository

All studios and labs will be submitted via Github repositories managed through Github Classroom. The link for each assignment will create and populate a starter repository for you to submit your code. Your work must be in the appropriate location for the instructor to find it and count it for credit.


Textbook and Class Resources

There is no required or reccomended textbook for this course.


Grading Policy

Activity Grade Percentage
Attendance 10%
In-Class Participation 10%
Labs 40%
Studios 20%
Midterm and Final Exams 10% each

Grading is done on a straight scale (uncurved). The following scores are guaranteed. The grading scale may be curved upwards (in your favor) at the discretion of the instructor.

Work assigned in this course, is expected to be completed individually. The sharing of written work or significant portions of code between students is strictly prohibited.


Attendance

Successful students attend all or mostly all class sessions. This is true in my experience and has been demonstrated in large scale studies as well. In that study, even students who attended nine out of ten class periods had measurably lower class performance than those who attended all classes. However, there is no attendance requirement for this class, and you do not need to get permission when you do miss class. You are an adult and have the freedom to manage your time in whatever way you feel is most useful. Job interviews, conferences, tests in other courses, etc. are all reasonable cases for being absent.

Attendance grade will be determined by taking roll call at the start of class. For credit, you must be in class and respond when your name is called. This will happen approximately 10 times over the course of the semester.

In-Class Participation grade will be determined by responses to online surveys or submissions of in-class work to Canvas. Such activities can only be submitted during class time. Once the submission window closes these activities can no longer be submitted and cannot be made up. Please make sure to participate and click "submit" on all such activities!

Note that in-class assignments such as group work, discussion groups, or attendance assignments cannot be made up outside of class without prior approval from the instructor. Major activities such as quizzes or tests will be listed on the course schedule with ample time to prepare (i.e. there are no "pop quizes").

If you do miss class you should refer to the course schedule to see what was missed and arrange to get course notes from another student. I am always happy to answer questions but I do not repeat full class periods in office hours.


Generative Artificial Intelligence (ChatGPT, LLMs, etc.)

Three really important points:

Recent surveys of student behavior suggest that 80% of computing students are using GenAI as a replacement for internet searches, to learn course concepts, or to help troubleshoot faulty code. These informational purposes are allowed and encouraged! GenAI has a wonderful ability to immediately provide you relevant and personalized information in a way that internet searches do not. Searching an error code on Google, for example, will return dozens of results about dozens of people all with their own individual problems, and then you have to sift through all that information to find the one answer that is meaningful to you. In that sense, GenAI can be thought of as a super search engine. As a student, this helps you learn things faster. That's good!

However, GenAI can also be used to cheat. You can ask GenAI to write your program for you, or copy-paste your program and ask it to fix your bugs. That's bad! You won't understand the problems, you won't understand the solutions, and if I ask you to explain your code you won't even be able to tell me how your code works. As a student, this is self-destructive and prevents you from learning.

In general, you are permitted to use GenAI to help yourself learn faster. You are forbidden using GenAI to do your work for you. This is not actually a complicated policy! At the risk of horribly anthropomorphizing technology, imagine GenAI is a human friend sitting next to you. You already understand what kinds of questions are acceptable and which are not. Asking your friend to explain a programming language feature is not cheating. Asking your friend what an error message means is not cheating. Asking your friend to write code for you is cheating. Giving your friend your code and asking them to fix the bugs is cheating. Asking to see your friend's solution and writing your own version is cheating. The fact that you may be asking a GenAI system instead of a human friend does not change whether those things are acceptable or cheating. 

If it would be OK to ask a human friend, it's OK to ask ChatGPT. If it would be cheating to ask a human friend, then it's cheating to ask ChatGPT (or Google Gemini, or Github Copilot, etc.). 

A few explicit rules:

If you have any questions or want any clarifications to this policy, then please ask me. If you find yourself in an uncertain situation, then please ask me and let me give you advice. This is a brave new world for all of us, and I'm not pretending that I have everything already figured out. I am very willing to be lenient with well-intentioned students who are upfront about how they're using the technology.


Academic Integrity/Honesty

Academic integrity is the commitment to and demonstration of honest and moral behavior in an academic setting. Since the mission of the University is "the pursuit of truth for the greater glory of God and for the service of humanity," acts of integrity are essential to its very reason for existence. Thus, the University regards academic integrity as a matter of serious importance. Academic integrity is the foundation of the academic assessment process, which in turn sustains the ability of the University to certify to the outside world the skills and attainments of its graduates. Adhering to the standards of academic integrity allows all members of the University to contribute to a just and equitable learning environment that cultivates moral character and self-respect. The full University-level Academic Integrity Policy can be found on the Provost's Office website at: https://www.slu.edu/provost/policies/academic-and-course/academic-integrity-policy.pdf.  

[last updated: May 2024]


Disability Accommodations

Students with a documented disability who wish to request academic accommodations must formally register their disability with the University. Once successfully registered, students also must notify their course instructor that they wish to use their approved accommodations in the course.

Please contact the Center for Accessibility and Disability Resources (CADR) to schedule an appointment to discuss accommodation requests and eligibility requirements. Most students on the St. Louis campus will contact CADR, located in the Student Success Center and available by email at accessibility_disability@slu.edu or by phone at 314.977.3484. Once approved, information about a student’s eligibility for academic accommodations will be shared with course instructors by email from CADR and within the instructor’s official course roster. Students who do not have a documented disability but who think they may have one also are encouraged to contact to CADR. Confidentiality will be observed in all inquiries.

Note: due to accreditation requirements, regulatory differences, and/or location-specific resources, the School of Law, the School of Medicine, and SLU Madrid have their own standard language for syllabus statements related to disability accommodations. Faculty in those units should seek guidance for syllabus requirements from their dean’s office.

[last updated: August 2023]


Student Success Center

The Student Success Center (SSC) supports students in reaching their goals in and out of the classroom. Providing a variety of resources, the Student Success Center houses both the Center for Accessibility and Disability Resources (CADR) and Academic Support, which includes Tutoring, Supplemental Instruction, University Writing Services, and Student Success Coaching. The Student Success Center is located in the Busch Student Center, Suite 331, and students can make an appointment with any SSC resource via EAB Navigate. To learn more about the Student Success Center and its resources, please visit: https://www.slu.edu/life-at-slu/student-success-center/index.php.

[last updated: August 2023]


University Writing Services

University Writing Services offers one-on-one consultations with trained writing consultants from different disciplines who help with everything from brainstorming, outlining, and proposing research questions to documenting sources, revising, and implementing feedback. These consultations can take place in-person, asynchronously, or via Zoom and can be scheduled through EAB Navigate – StudentLinks to an external site.. Getting feedback benefits writers at all skill levels on different writing projects (including but not limited to class assignments, conference papers, cover letters, dissertations, group projects, multimedia assignments, personal statements, senior capstone projects, short answer questions on applications, speeches, and theses). For additional information, visit https://www.slu.edu/life-at-slu/student-success-center/academic-support/university-writing-services/index.php or send an email to writing@slu.edu.

[last updated: August 2023]


University Counseling Center

The University Counseling Center (UCC) offers free, short-term, solution-focused counseling to Saint Louis University undergraduate and graduate students. UCC counselors are highly trained clinicians who can assist with a variety of issues, such as adjustment to college life, troubling changes in mood, and chronic psychological conditions. To make an appointment for a wellness consultation, call 314-977-8255 (TALK), or visit the clinic on the second floor of Wuller Hall. For after-hours needs, please press #9 after dialing the clinic number.

 [last updated: April 2024]


Wellness

With our Jesuit commitment to cura personalis, the University sees your academic success as connected to your health and well-being and provides resources to support your holistic wellness.

All students experience stressors and challenges at some point, and seeking support is both normal and beneficial. Such challenges may be the result of academic concerns (such as those related to particular assignments or content in a course), or they may be more personal in nature (such as concerns related to relationships, mental health, medical issues, loss, identities, alcohol or drugs, housing or food security, finances, or local/world events, among other things). If you experience these or other difficulties that are impacting your well-being and/or academic work, please consider seeking support from the resources available to you.

If you or someone you know is experiencing a crisis: please consult Crisis Support and Warning Signs on the University Counseling Center website or call the University Counseling Center at 314-977-TALK (8255) and press #9 to be connected to a behavioral health nurse 24/7.

[last updated: April 2024]


Basic Needs Security

Students in personal or academic distress and/or who may be specifically experiencing challenges such as securing food or housing, or having difficulty navigating campus resources, and who believe this may affect their performance in the course, are encouraged to contact the Dean of Students Office (deanofstudents@slu.edu or 314-977-9378) for support. Furthermore, please notify the instructor if you are comfortable in doing so, as this will enable them to assist you with finding the resources you may need.

[last updated: August 2023]