Course Syllabus

IMPORTANT NOTE:  Information in this CS 3960 syllabus and Canvas course are subject to change. Students will be informed immediately of any changes.

CS 3960-002 meets with CS 3505 for the first half of the semester, but has a separate syllabus posted here.

CS3960-002 - Software Practice II-CE

Top Information -

Instructor: Eric Heisler, (Use Piazza for course communication)

See the Getting Help section below for instructor and TA office hours.


Tuesdays and Thursdays 12:25 - 1:45pm in WEB L104, led by Prof. Heisler

Lab sessions:

Every Wednesday at various times depending on your section, led by Teaching Assistants (TAs)

Attendance in lectures and labs is expected.

Important dates:

  • Midterm exam is Thursday, February 22, during the regular class time.
  • The last lecture is Tuesday, February 27.

The exam is paper-based, administered in person, and cannot be taken remotely.

More important dates: University academic calendar, PCE semester guidelines


There is no textbook, but reading from online resources will be assigned and linked in the weekly to-do lists.

Course Information

CS 3960 is about C++ software development. Along with the C++ programming language, this course looks at development environments traditionally associated with C++ (linux terminal, makefiles, etc.). We will also cover C++ design patterns and frameworks that are actively used in modern software development.

You should have a solid foundation in programming, computer science, mathematics, and application development to be enrolled in this course. We will begin assuming that all students know how to create applications in other programming languages and that you have three semesters of programming experience. Students who did poorly in any of the prerequisites should consider re-taking the prerequisite before taking this class. 


The prerequisite is Full Major or Minor status in Computer Science OR Computer Engineering OR Software Development. Students who do not meet this requirement will be removed from CS 3960 in the first week of class.

Learning objectives 

Upon completion of CS 3960, students are able to:

  1. Write programs using a systems-level programming language and identify differences in language features between the language used for this course with previously-learned programming languages.
  2. Develop programs using a command-line-oriented programming environment
  3. Use and modify a software-development tool chain (for example, version control, test suites, peer review, continuous integration) to support the development of an application.


The lectures and labs are designed as interactive experiences, so attendance is not optional. Lectures will be based on slides, code examples, and class discussion. Lecture recordings will not be provided except for approved circumstances that are arranged in advance with the instructor. This does not include things like vacations. It could include documented medical reasons, etc.

We will occasionally have planning or design sessions during lecture that involve team-based planning and coordination. It is crucial that students attend lectures to form teams and participate in team activities.


All class announcements and student questions (public or private) take place on Piazza — sign up right away and set notifications appropriately. Do not use Canvas inbox.

Course Materials

This CS 3960 Canvas course will be updated continually throughout the semester. There will be frequent changes and additions to the weekly modules, including course notes, slides, code samples, assignments, quizzes, and more. None of the materials created by the instructor can be shared with anyone outside of this class, in particular they must not be uploaded to an external website.

Laboratory practice

Lab sessions meet on Fridays to give students guided practice applying the concepts of CS 3960. Attendance and completion of lab activities makes up a portion of your grade. The one lowest lab score will be dropped.

Students selected a lab section with a particular schedule when registering for the course. To keep lab groups to a manageable size, students must attend the lab section they are enrolled in. On rare occasions when it is necessary, attending a different lab section is allowed without prior approval. Students should bring their own laptops or make arrangements to use a "loaner" laptop in each lab session.

Later in the semester, labs will involve team work. For those labs, you can attend any lab session that your team is available for. You must be able to meet with your team during an assigned lab time.

Projects and Code Reviews 

There will be projects and code reviews due throughout the semester. The release and due dates for each assignment will be posted on the class website. 

Projects will involve a significant amount of programming and design. As this is a three-hour class, I expect students will spend an average of 6-9 hours a week working on the assignments. 

Students must be aware that their work will be subject to peer review throughout the semester. We will make portions of your work visible for other students to see and review (with names, comments, and filenames intact). Please do not hand in anything objectionable or sensitive. Also, students will be required to review the work of their peers in the class. Specific requirements for reviews will be posted on Canvas, and we will discuss how to conduct code reviews in class.

Personal computers

Students may use their own computers for completing assignments and taking Canvas quizzes; however, broken tools or computers, or network connectivity issues are not sufficient basis for a deadline extension. Plan ahead and use a campus lab computer if your own is not working.

Coursework and Evaluation

Programming assignments

There will be regular programming assignments that include a mix of solo, pair, and team programming. The details of each will be given as the course progresses. There are some assignments that cannot be done individually, so you will have to work with classmates to be successful in the course.

Assignment Late Policy: Each assignment's deadline is followed by a two-day late period. Late submissions are penalized 10 percent of the maximum score for each day beyond the deadline. Programming and analysis portions are considered separately based on their respective maximums and submission dates. Note that midnight marks the start of a new day. After two late days a submission will not receive credit. Time of submission is recorded by the submission system. Don't wait until the last minute to submit as you may experience unexpected delays in the system.


A midterm exam will be given on Thursday, February 22 in the regular lecture time and place. The exam may not be taken at a different time except for a medical emergency or conflict with another exam.

Each student must bring their UCard to the exam, and they may be asked to show their UCard when turning in the exam. No other type of identification may be used for this purpose.

In-class quizzes

There will be occasional in-class quizzes taking roughly 20 minutes during the regular lecture time. Treat these as mini exams. Study for them and be sure not to miss any. The tentative dates of these quizzes are: 1/23 and 2/6. Any deviations from this plan will be announced at least one week in advance.

Labs sessions

Most labs are composed of a TA-led activity and a Canvas quiz to be completed by students each Wednesday. The quiz must be completed that day. It cannot be submitted late.

Canvas quizzes

Students take Canvas quizzes regularly, reviewing the material covered recently in class meetings and lab, as well as preparing for an upcoming assignment. Note that these Canvas quizzes are distinguished from those used in labs. Each quiz's deadline is final. Solutions are made visible after the deadline, so no late submission is possible.

Peer code reviews

You will be expected to make careful and rigorous reviews of other student code. 


The final grade is composed of:

  • assignments 35%
  • exam 28%
  • in-class quizzes 12%
  • labs 10%
  • Canvas quizzes 10%
  • peer review 5%

The following table is used to associate numerical scores with the corresponding letter grade. Note the lack of rounding.

93 ≤ X ≤ 100 A
90 ≤ X < 93 A-
87 ≤ X < 90 B+
83 ≤ X < 87 B
80 ≤ X < 83 B-
77 ≤ X < 80 C+
73 ≤ X < 77 C
70 ≤ X < 73 C-
67 ≤ X < 70 D+
63 ≤ X < 67 D
60 ≤ X < 63 D-
X < 60 E


Students desiring to appeal a score on an assignment or exam must do so via Gradescope. For any Canvas quiz, the appeal must be made via a private post to Instructors in Piazza. All such appeals are due no later than one week after the score is published.

Getting Help

To get help understanding course material, students may see the Teaching Assistant(s) during TA Help Hours, see the instructor during Office Hours, or post a question to Piazza. To contact the course staff directly, use Piazza. Do not use Canvas inbox. See the Instructions on how to get help page for details.

Policies and Resources

ADA statement

The University of Utah seeks to provide equal access to its programs, services and activities for people with disabilities. If you need accommodations in the class, reasonable prior notice needs to be given to the Center for Disability & Access, 162 Olpin Union Building, 801-581-5020. CDA will work with you and the instructor to make arrangements for accommodations. 

All written information in this course can be made available in alternative format with prior notification to the Center for Disability & Access.

Student mental health resources

If you would like help with any negative feelings, such as burnout, anxiety, depression, isolation, or loneliness, reach out for campus mental health resources, including counseling, trainings and other support.

Consider participating in a Mental Health First Aid or other wellness-themed training provided by our Center for Student Wellness and sharing these opportunities with your peers.

Student Names & Personal Pronouns 

Class rosters are provided to the instructor with the students legal name as well as Preferred first name(if previously entered by you in the Student Profile section of your CIS account). Please advise me of any name or pronoun changes (and update CIS) so I can help create a learning environment in which you, your name, and your pronoun will be respected. If you need assistance getting your preferred name on your UIDcard, please visit the LGBT Resource Center Room 409 in the Olpin Union Building, or email to schedule a time to drop by. The LGBT Resource Center hours are M-F 8am-5pm, and 8am-6pm on Tuesdays.

Learners of English as an Additional Language 

If you are an English language learner, please be aware of several resources on campus that will support you with your language and writing development. These resources include: the Writing Center (; the Writing Program (; the English Language Institute ( Please let me know if there is any additional support you would like to discuss for this class.

Other polices and guidelines 

Students are bound by the following policies and guidelines:

Students should read and understand each of these documents, asking questions as needed.