CS371p: Object-Oriented Programming



Course Information


  • Instructional Mode: Face-to-face
  • Help Sessions: T 6-8 pm, GDC basement

Instructor


Prof. Glenn Downing
https://www.cs.utexas.edu/~downing/
Office Hours: MF, 12 pm, GDC 6.304

UGCAs


Long Phan
GitLab: https://gitlab.com/longphan084/
Office Hours: W 9 am, GDC basement
Sneha Ballabh
GitLab: https://gitlab.com/snehaballabh/
Office Hours: T 12:30 pm, GDC basement
Tapaswini Kodavanti
GitLab: https://gitlab.com/tk24428/
Office Hours: M 2 pm, GDC basement

Welcome Message


  • Sign into Canvas and confirm your registration for the course. Check your grades regularly.
  • Confirm that you can access Ed Discussion on Canvas to post class questions.
  • If it involves something personal, like your grade, please make a private post on Ed Discussion.
  • Sign up for a GitLab account and clone the class repo to access the examples, exercises, and notes.
    • git clone https://gitlab.com/gpdowning-ut/cs371p.git
  • Sign up for a HackerRank account for the projects.
  • Sign up for a Zoom account. You must use your UT EID credentials. Ensure that you have the latest version of the app: 6.5.3

Communication


  • Please use Ed Discussion for all of your communication with the staff.

Catalog Description


  • Programming using class derivation; inheritance; and dynamic polymorphism. Application of a simple object-oriented design methodology to several software development problems.

Overview of the Class


Week Date Topic Problem Project
1 25 Aug syllabus, docker 1
2 01 Sep assertions, unit tests, coverage, operator++(), references 2
3 08 Sep exceptions, consts 1
4 15 Sep iteration, std::equal(), std::copy(), std::reverse() 3
5 22 Sep iterators, range, operator[](), const methods, stack arrays 4
6 29 Sep operator==(), friends, initializations, std::initializer_list, std::array 2
7 06 Oct heap arrays, std::vector, std::allocator 5
8 13 Oct copy constructor, copy assignment 6
9 20 Oct function overloading, move, std::deque, std::list, std::stack, std::queue, std::priority_queue 3
10 27 Oct UML, random numbers, inheritance, method overriding 7
11 03 Nov virtual functions, dynamic binding, dynamic_cast, pure virtual functions 8
12 10 Nov smart pointers 4
13 17 Nov singleton 9
14 24 Nov Fall Break
15 01 Dec std::shared_ptr, observer, strategy 5
16 08 Dec factory

Lectures Online


  • This class is using the Lectures Online recording system. This system records the audio and video material presented in class for you to review after class. Links for the recordings will appear in the Lectures Online tab on the Canvas page for this class. You will find this tab along the left side of the navigation in Canvas.
  • To review a recording, click on the Lectures Online navigation tab and follow the instructions on the page. You can learn more about how to use the Lectures Online system at http://sites.la.utexas.edu/lecturesonline/students/how-to-access-recordings/.
  • You can find additional information about Lectures Online at https://sites.la.utexas.edu/lecturesonline/.

Pre-Requisites of the Course


  • Prerequisite: Computer Science 429 or 429H with a grade of at least C-.

Software



Learning Outcomes


Altitude
  • appreciate the value of automatic builds
  • appreciate the value of collaboration
  • appreciate the value of component reuse
  • appreciate the value of continuous integration
  • appreciate the value of refactoring
  • appreciate the value of software testing
Knowledge
  • algorithms
  • allocators
  • assertions
  • class vs. instance data
  • class vs. instance methods
  • classes
  • containers
  • design patterns
  • dynamic vs. static binding
  • exceptions
  • inheritance
  • iterators
  • makefiles
  • smart pointers
  • UML
  • unit tests
  • virtual methods
Skill
  • algorithm design that requires the weakest iterator
  • container design that provides the strongest iterator
  • continuous integration design
  • object-oriented design that minimizes setters and getters
  • makefile design
  • software coverage
  • software documentation
  • software formatting
  • software testing

Grading Policy


  • We expect each student to abide by the University of Texas Honor Code: "As a student of The University of Texas at Austin, I shall abide by the university's core values and uphold academic integrity." We permit discussing problem solutions with other students, asking others for conceptual help with a problem, looking online for tutorials explaining how to solve a problem, or getting help from a classmate debugging code you wrote. However, all code you turn in must be your own. The penalty for copying code (either from another student or the Internet) is an F in the course.
  • We will compute your grade with an innovative approach called specifications grading.
  • We will evaluate each assignment to see whether it meets the specifications.
  • Here's the EMRN scale:

  • The Canvas grade book uses a numerical scoring system and therefore we will map the EMRN scale onto a numerical scale:
    • E (3) [Excellent/Exemplary]
    • M (2) [Meets Expectations]
    • R (1) [Revision Needed]
    • N (0) [Not Assessable]

Assignments


Assignment N (0) R (1) M (2) E (3)
17 exercises
  • auto-graded by Ed Lessons
  • exercises are collaborative
  • makeups within one day
  • only two times
  • 2 out of 3 points
  • 3 out of 3 points
  • two E (3)s make up one R (1)
14 papers
  • auto-graded by Perusall
  • papers are collaborative
  • lates within one day
  • only two times
  • 2 out of 3 points
  • 3 out of 3 points
  • two E (3)s make up one R (1)
9 problems
  • auto-graded by Kattis
  • problems are individual
  • lates within one day
  • only two times
  • 2 out of 2 points
  • no E (3)s
5 projects
  • auto-graded by HackerRank
  • first project is individual
  • remaining projects
    • at least one must be in pairs
    • different projects must have
      different pairs
  • lates within one day
  • only two times
  • resubmissions within one week
  • only two times
  • 2 out of 2 points
  • no E (3)s
41 quizzes
  • auto-graded by Canvas
  • quizzes are collaborative
  • makeups within one day
  • only three times
  • 2 out of 3 points
  • 3 out of 3 points
  • two E (3)s make up one R (1)
  • For N (0)s or R (1)s over the last three weeks, makeups require a documented emergency excuse, medical excuse or UT-related event.
  • You must submit an emergency excuse to Student Emergency Services (SES). If the excuse is approved, SES will contact the instructor.

Late Add


The last day to add is the fourth class day, Thu, 28 Aug. If you add on that day, you will have already missed one problem and one quiz. You can make up both, but they will count against your two makeups.


Grades


Letter Percent Exercises Papers Problems Projects Quizzes
17 14 9 5 41
A 94% 16 13 8 5 39
A- 90% 15 13 8 5 37
B+ 87% 15 12 8 4 36
B 84% 14 12 8 4 34
B- 80% 14 11 7 4 33
C+ 77% 13 11 7 4 32
C 74% 13 10 7 4 30
C- 70% 12 10 6 4 29
D+ 67% 11 9 6 3 27
D 64% 11 9 6 3 26
D- 60% 10 8 5 3 25
  • Your course grade will depend on the number of assignments you complete with an M (2) or an E (3). It will then be the lowest grade in all assignment categories.

Generative Artificial Intelligence


  • AI tools (such as UT's Microsoft Copilot) and similar assistants can be valuable resources for learning and improving your code.
  • However, in this course, you are expected to use AI as a helper, not as a coder.
    • Do use AI to ask questions about concepts, debugging strategies, error messages, or ways to improve the clarity, style, or efficiency of your code.
    • Do use AI to deepen your understanding of why your code works, or doesn’t, and to learn alternative approaches.
    • Do not ask AI to generate solutions, write complete programs, or provide code that you then submit as your own.
  • The goal is for you to learn to think and code independently.
  • There is nothing to lose and everything to gain by asking an AI not to do your work but to critique it instead!

Overview of all Major Course Requirements and Assignments



MOSS


  • We will compare your programming assignments with Kattis and MOSS.
  • You may share design ideas with your fellow students. You may not share code in any way.

Canvas Assignments



Required Course Materials


  • No required materials.

Recommended Course Materials



Final Exam Date and Time


  • No final exam.


Notice of Academic Accommodations from Disability and Access (D & A)


  • The university is committed to creating an accessible and inclusive learning environment consistent with university policy and federal and state law. Please let us know if you experience any barriers to learning so I can work with you to ensure you have equal opportunity to participate fully in this course. If you are a student with a disability or think you may have a disability and need accommodations, please get in touch with Disability and Access (D & A). If you have already registered with D & A, please deliver your Accommodation Letter to me as early as possible in the semester so we can discuss your approved accommodations and needs in this course.

University Policies and Resources for Students Canvas Page


  • This Canvas page is a supplement to all UT syllabi and contains University policies and resources that you can refer to as you engage with and navigate your courses and the university.

Copyright © Glenn P. Downing, 1995-2025
Updated 26 Aug 2025