CSc 352 - Systems Programming and UNIX

University of Arizona, Summer 2023

Course Description

Programming in C, including single and multi-dimensional arrays, lists, stacks, queues, trees, and bit manipulation. Unix topics, including debuggers, makefiles, shell programming, and other topics that support systems programming.

Location and Time

This is an online, asynchronous course. There is no specific meeting time or location.

Prerequisites

Completion of CS 210 and 252.

Instructor & Teaching Staff

There will also be one or more TAs. See the class website for their contact info and office hour times.

Teaching Methods

This is an online, asynchronous course. Instead of attending class, you will be expected to watch a series of video content and readings from the textbooks. There will also be programming assignments and exams.

Course Objectives

There are two high-level topics in this course: UNIX systems and C programming. I will cover the high-level structure of a UNIX system, including the file system, the shell, processes, etc. I will also cover a number of shell commands, and teach you the basics of how to create a shell script. You will also learn the core components of the C language, pointers, memory management, and how to create a data structure with C. You will also learn some tools to help you create better C programs - GDB, make, and Valgrind.

Learning Outcomes

A students who completes this course with good grades should be able to do the following:

Course Communications

The means of communication for this course will be either office hours, email, or the class discord server.

Coursework and Grading Policies

The breakdown of grades in this course is as follows:

There will be three exams throughout the course (including the final), for a total of 50%. The final will be worth 20%, and the other two 15% each. These exams may cover material from class, the programming assignments, and the readings covered up-to the day of the exam. When taking an exam, it is important to ensure that you have the proper technology and internet access to complete the exam. I will not be providing make-up opportunities for technical difficulties, such as your battery dying while taking an exam, losing internet during an exam, etc. You will take the exams via Gradescope. There will be a several-hour window during which you must take the exam on exam days. Check the schedule for the dates of these exams. You should ensure that you have at least two hours of available time on each exam day between 3-8pm AZ time.

There will be at 9 programming assignments throughout the course, which will contribute to 40% of the student’s grade. These will be individual assignment, unless the instructor specifies otherwise and each will be weighted equally.

10% of your grade in this class comes from required office-hour check-in meetings. You are required to visit office hours at least four times throughout the course:

The first meeting must be with the primary instructor (Ben). He will have some extra office hours the first two weeks to supplement this. The others may be with Ben or our Teaching Assistant. Each meeting is worth 2.5% of your final course grade. These meetings are an opportunity for us to get to know you better, check in on how you are doing in the course, and answer any questions you may have at that point in time. When you join the office hour, you should et the instructor know that you want this meeting to count for one of your required ones.

Each week there will be a series of videos that you will be expected to watch. The video content for each week will be accompanied by readings from the book. You should try to accomplish each reading before class on the day it appears on the schedule. That way, when watching the videos, you should already have some background on the topic at-hand and can learn it more effectively.

The instructor and teaching staff will do our best to have grades back to students within 1.5 weeks. This includes, but is not limited to, grades for exams, projects, programming assignments, and the check-in meetings. Once a grade has been entered for a particular item on the digital grade-book, students have at most 7 days (including weekends) to dispute the grade. This includes disputes related to excuses such as sickness, personal matters, dean’s excuses, etc. If 7 days pass and there has not been such a request, the grade is final.

The correspondence between percentage grade and numeric grade is as follows:

Late Days

In this class, you are given 2 late days. What this means is that you are allowed to submit up to 2 programming assignments within 24 hours after the due date throughout the semester, without penalty. You should not burn through all of these free late days on the first few assignments though! Consider saving some for later in the course, when you might be in dire need :). Other than these, any work submitted late will get a 0.

Final Exam

The final exam will be on August 9th. You should ensure that you have at least two hours of available time on this day between 3-8pm AZ time. There will be no make-up opportunities for the final exam.

Textbook

There are two required / highly-recommended textbooks for this course:

There will be assigned readings from these books. You will be expected to have completed the readings before the day of class that they correspond to, and testing on the content from the readings is fair-game for the exams. Technically, you could get away without purchasing the books, but that is not recommended. Not only should you be doing the readings throughout the course, but also, the exams will be open book for these two texts (hard-copy only).

Software and Hardware

You should have access to a Mac, Windows, or Linux computer and a reliable internet connection. You will need to be able to connect to Lectura to compile and run programs on a regular basis.

Course Help

The instructor and teaching staff provide opportunities to receive help when you are stuck. The instructor and TAs will have office hours each week. The online office hours will be hosted via discord, and the in-person ones (if any) will be hosted at Gould-Simpson.

If you are unable to use office hours, you can also get help by asking questions in the discord chat. You are also welcome to email the instructor or a TA directly if you want to set up an alternate time to meet. If you are ever stuck, ask for help!

Cheating

Unless otherwise specified, you may not work in groups on any coursework in this course. You may not share code, copy/paste code, or look at each-others code, or discuss the details of the solutions. Any work you submit should be your own work. The instructor may use software to help detect cheating (similar code). If cheating is detected on your work, penalties may include (but are not limited to):

Course Schedule

See the schedule page on the class website for the topic and reading schedule.

Additional Resources for Students

UA Academic policies and procedures are available at http://catalog.arizona.edu/policies. Student Assistance and Advocacy information is available at http://deanofstudents.arizona.edu/student-assistance/students/student-assistance.

Incomplete (I) or Withdrawal (W):

Requests for incomplete (I) or withdrawal (W) must be made in accordance with University policies, which are available at http://catalog.arizona.edu/policy/grades-and-grading-system#incomplete and http://catalog.arizona.edu/policy/grades-and-grading-system#Withdrawal respectively.

Absence and Class Participation Policy

The UA’s policy concerning Class Attendance, Participation, and Administrative Drops is available at: http://catalog.arizona.edu/policy/class-attendance-participation-and-administrative-drop

The UA policy regarding absences for any sincerely held religious belief, observance or practice will be accommodated where reasonable: http://policy.arizona.edu/human-resources/religious-accommodation-policy.

Absences pre-approved by the UA Dean of Students (or dean’s designee) will be honored. See https://deanofstudents.arizona.edu/absences

Obtaining Help

Makeup Policy for Students Who Register Late

Students who register after school has already begun are not guaranteed to be given the opportunity to make up late work.

Illness

COVID-19

As we enter the semester, our health and safety remain the university’s highest priority. To protect the health of everyone in this class, students are required to follow the university guidelines on COVID-19 mitigation. Please visit www.covid19.arizona.edu.

Department of Computer Science Code of Conduct

The Department of Computer Science is committed to providing and maintaining a supportive educational environment for all. We strive to be welcoming, respect privacy and confidentiality, behave respectfully and courteously, and practice intellectual honesty. Disruptive behaviors (such as physical or emotional harassment, dismissive attitudes, and abuse of department resources) will not be tolerated.

Classroom Behavior Policy

To foster a positive learning environment, students and instructors have a shared responsibility. We want a welcoming environment where we can challenge ourselves to succeed. All students should strive to learn and treat each-other with respect in all of the interactions through this online course, whether via Discord, Email, office hours, or any other forms of interaction.

Threatening Behavior Policy

The UA Threatening Behavior by Students Policy prohibits threats of physical harm to any member of the University community, including to oneself. See http://policy.arizona.edu/education-and-student-affairs/threatening-behavior-students.

Accessibility and Accommodations

At the University of Arizona we strive to make learning experiences as accessible as possible. If you anticipate or experience physical or academic barriers based on disability or pregnancy, you are welcome to let me know so that we can discuss options. You are also encouraged to contact Disability Resources (520-621-3268) to explore reasonable accommodation. Please be aware that the accessible table and chairs in this room should remain available for students who find that standard classroom seating is not usable.

Code of Academic Integrity

Students are encouraged to share intellectual views and discuss freely the principles and applications of course materials. However, graded work/exercises must be the product of independent effort unless otherwise instructed. Students are expected to adhere to the UA Code of Academic Integrity as described in the UA General Catalog. See http://deanofstudents.arizona.edu/academic-integrity/students/academic-integrity.

The University Libraries have some excellent tips for avoiding plagiarism, available at http://www.library.arizona.edu/help/tutorials/plagiarism/index.html.

Selling class notes and/or other course materials to other students or to a third party for resale is not permitted without the instructor’s express written consent.

Violations to this and other course rules are subject to the Code of Academic Integrity and may result in course sanctions. Additionally, students who use D2L or UA e-mail to sell or buy these copyrighted materials are subject to Code of Conduct Violations for misuse of student e-mail addresses. This conduct may also constitute copyright infringement.

UA Nondiscrimination and Anti-harassment Policy

The University of Arizona is committed to creating and maintaining an environment free of discrimination. In support of this commitment, the University prohibits discrimination, including harassment and retaliation, based on a protected classification, including race, color, religion, sex, national origin, age, disability, veteran status, sexual orientation, gender identity, or genetic information. For more information, including how to report a concern, please see http://policy.arizona.edu/human-resources/nondiscrimination-and-anti-harassment-policy

Subject to Change Statement

Information contained in the course syllabus, other than the grade and absence policy, may be subject to change with advance notice, as deemed appropriate by the instructor.