CSCI 341 Syllabus

Contact Information

Instructor:            Cynthia Taylor                     ctaylor@oberlin.edu

Cynthia's Office Hours:        M 3:30 - 5 pm, Thr 2:00 - 4:00 pm, or by appointment. On Zoom

Meeting Time and Location

Time: 2:40pm - 3:30pm MWF
Location: Zoom

Course Overview

The purpose of this course is to familiarize you with the the environment that modern computer programs exist in. You will gain experience with the many steps along the path from source code to running program, memory management and virtual memory, process creation, communication and control, and a healthy dose of concurrent programming. While the class combines theory and practice, there will be a focus on practical demonstrations in lecture and extensive hands-on programming experience.

Course Objectives

After this course, students will be able to:
  1. Describe the mechanics of loading a process into memory
  2. Use system calls in their programs, and understand system call mechanics
  3. Describe how the operating system keeps track of files, and use file-related system calls.
  4. Describe virtual memory and its implications for programming.
  5. Understand networking fundamentals and be able to use function calls involved with socket programming.
  6. Write code that uses processes and threads for concurrency, and use synchronization primatives.

Course Materials

We will be using the textbook "System Programming: A Programmers Perspective, 3rd edition" by Bryant and O'Hallaron.

If you cannot afford this book, the Oberlin's Emergency Book Fund provides loans to Oberlin students to buy textbooks and supplies. Students are expected to pay back these loans only when they are financially able. These funds are administered through the Office of the Dean of Students, Wilder Hall, Room 105. If you cannot afford this book and the Emergency Book Fund does not work for you, please talk to me and we will figure something out.

Grading

Final grades will be determined as follows:

Component %
Labs 45%
Worksheets 35%
Reading Questions 10%
Class participation 10%

Late Homework Policy

Reading questions are due before the class they are assigned for. You are expected to attend class having completed the readings.

At your discretion, you can use up to three free "late passes", which each grant you an additional day to complete a lab or problemset assignment (more than one can be used per assignment). Please make sure you let me know in advance (i.e., before the deadline) when you plan on using your late passes by filling out the late day form on Blackboard. If for some reason you are unable to complete your work, even given your late passes, please discuss the issue with me and we can figure out an alternate deadline.

Accessibility

I am committed to making this class accessible to all students. If you have accessibility needs, please email me or come discuss them with me. Things you might want to discuss accomodations for include physical and mental disabilities, both permanent and temporary, any situation that is causing you to not be able to attend class or spend as much time on this class as you would like (stress, family situations, work hours, just going through a rough time), not having access to computers, not being able to afford the textbook, anything that is keeping you from doing your best in this course. Let me know, and we'll figure something out.

Code of Conduct

Please read our agreed upon class norms here.

Both Oberlin College and I personally value the diversity of perspective that each of you bring to this classroom and our study of Computer Science together. In this class, we must all commit to fostering a safe, inclusive and welcoming environment which will allow all of us to learn. Please respect the competance and hard work of your colleagues in this classroom. If you are made to feel uncomfortable in class or while working on class material, please notify me so we can take steps to address the situation. Students who are disruptive to class and our learning community will face consequences including potentially being removed from the course.

Email Policy

If your question involves the labs or problem sets, please post it on piazza if at all possible. I will try to answer all email the work day after I receive it. I do not answer emails over the weekend. Emails that include a picture of a cute animal will get priority.

Academic Dishonesty

Reading questions are open-book/notes but are individual exercises: you should not discuss them with anyone

You may discuss both labs and worksheets with anyone in the class. You can work together on the worksheets and discuss the programming steps, etc. You should not discuss answers to individual questions on the worksheet except generally, and you should write your answers separately when applicable.

For labs, you can discuss as much as you want, however you should write your code individually and should not show anyone your code or look at someone else's code.

Copying code from the internet and submitting it is not allowed. You can google to find details of operating systems concepts or how to implement general things in C (i.e. for loops, socket programming) but you should not search for implementations of the lab problems (i.e. "how to implement a web server in C").

Students are expected to adhere to the Oberlin College Honor Code. Any violations will be reported to the Honor Code Committee.

For every assignment, students must indicate whether they followed the Honor Code in completing the assignment. If so, students should end each assignment by writing:

I have adhered to the Honor Code in this assignment.