Table of Contents
CSE 30332 - Programming Paradigms

Programming Paradigms

CSE 30332

CSE 30332 is a required Junior-level course in the Computer Science and Engineering program at the University of Notre Dame. This course will introduce the idea of Programming Paradigms to students. It is a course that is heavily focused on practical programming, reflected in the design of both the homework assignments and semester project. Upon successful completion of the course, students will be able to:

All slides shown during the tutorial will be available here after the lecture is delievered. If you have any specific questions or topics you would like to see covered please enter them in the google form below. This form is anonymous. Before every lecture I will select a few of the most common questions to cover in addition to the stated topics.

Question submission link


M/W/F 10:30 AM - 11:20 AM
356A Fitzpatrick Hall
Zoom Meeting
948 3826 0745
Mailing List (Class)
Mailing List (Staff)
Bill Theisen (
*Professor Theisen, Professor Bill, Bill
Office Hours
M/T/W/R 1:00 PM - 3:00 PM, and by appointment
Office Location
150A Fitzpatrick Hall (CSE Commons)
Graduate TA
Nhat Le (
Undergraduate TA
Gavin Uhran (
Office Hours
M/W 3:00PM - 4:30PM
Office Hours Location
Innovation Lounge (Duncan Student Center)


Unit Date Topics Assignments
Unit 01: Functional Programming
Introduction Wed 01/18 Syllabus, Introduction to Paradigms
Slides Panopto
Homework 01 Project Intro
Functional Programming Theory and Review Fri 01/20 Systems Programming Review, Lambda Calculus, and Lambda Functions
Slides Panopto Code
Mon 01/23 Why bother with Functional Programming, Reviewing Recursion, Closures, and Continuation Passing Style
Slides Panopto Code
Applied Functional Programming in Python Wed 01/25 Iterables, Comprehensions, Generators, and Lazy Evaluation
Slides Panopto Code
Fri 01/27 car and cdr, Sorting
Slides Panopto Scheme Code Python Code
Mon 01/30 Folding
Slides Panopto Code
Wed 02/01 Concurrency
Slides Panopto Code
Fri 02/03 Flex Day 1
Slides Panopto Simple Threading Code
Unit 02: Object-Oriented Programming
OOP Mon 02/06 A Theoretical Introduction to Object Oriented Programming
Slides Panopto (Failed to Record) Code
Homework 02
Wed 02/08 UML Diagrams
Slides Panopto
Fri 02/10 Project Workday Project Checkpoint 01
Mon 02/13 Inheritance
Slides Panopto Code
Wed 02/15 Composition and Encapsulation
Slides Panopto Code
Fri 02/17 Polymorphism
Slides Panopto Code
Mon 02/20 Design Patterns
Slides Panopto Singleton Code Factory Code
ORM Wed 02/22 SQLAlchemy 1
Slides Panopto SQL Code ORM Code
Fri 02/24 SQLAlchemy 2 (No Class)
Flask Mon 02/27 Flask
Slides Panopto Code 1 Code 2
Homework 03
Wed 02/29 Combining Flask and SQLAlchemy
Slides Panopto Database Code
Fri 03/03 Flex Day 2
Slides Panopto Scoping Code
Exam 01: Midterm Exam
Midterm Exam Mon 03/06 Midterm Review
Study Guide
Wed 03/08 Midterm Exam Exam 01
Fri 03/10 Project Workday Project Checkpoint 02 Midterm Cif
Spring Break
Unit 03: Basic Front-End Development
Reviewing Flask Mon 03/20 Flask endpoints
Slides Panopto Code
Wed 03/22 Flask templating
Slides Panopto Flask Endpoints About HTML Base HTML
HTML Fri 03/24 Introduction to HTML
Slides Panopto HTML
Mon 03/27 HTML Tags and Elements
Slides Panopto HMTL
Wed 03/29 HTML Forms and Flask
Slides Panopto Flask Forms HTML Form 1 HTML Form 2
Fri 03/31 Flask Session Variables
Slides Panopto Flask Session HTML Session 1 HTML Session 2 (AJAX)
Mon 04/03 Flask and Bootstrap
Slides Panopto Flask Bootstrap HTML Bootstrap 1
Homework 04
CSS Wed 04/05 Introduction to CSS
Slides Panopto CSS Example
Easter Break
CSS Wed 04/12 CSS and Bootstrap
Slides Panopto Bootstrap CSS
Fri 04/14 Project Workday Project Checkpoint 03
Unit 04: Javascript
Javascript Mon 04/17 Introduction to Javascript
Slides Panopto Intro Javascript
Homework 05
Wed 04/19 Javascript Variables, Datatypes, and Operators
Slides Panopto JS Variables
Fri 04/21 Javascript Functions, Conditionals, and Loops
Slides Panopto
Mon 04/24 No Class
Wed 04/26 Javascript DOM Manipulation and Events
Slides Panopto DOM Manipulation
Fri 04/28 Javascript: AJAX and JSON; Javascript Frameworks: React and Angular
Slides Panopto
Mon 05/01 Javascript Libraries: jQuery and D3
Slides Panopto
Wed 05/03 Project Workday Project Checkpoint 04


Component Points
Homeworks Bi-weekly individual assignments. 5 × 75
Project Individual Semester project. 3 × 25: Project Checkpoints
1 × 150: Final Submission
Exams Two timed exams. 1 × 150: Midterm
1 × 250: Final
Total 1000
Grade Points Grade Points Grade Points
A 930-1000 A- 900-929
B+ 870-899 B 830-869 B- 800-829
C+ 770-799 C 730-769 C- 700-729
D 600-699 F 0-599


Students are expected to attend and contribute regularly in class. This means answering questions in class, participating in discussions, and helping other students.

Recalling one of the tenets of the Hacker Ethic:

Hackers should be judged by their hacking, not criteria such as degrees, age, race, sex, or position.

Students are expected to be respectful of their fellow classmates and the instructional staff.

Any student who has a documented disability and is registered with Disability Services should speak with the professor as soon as possible regarding accommodations. Students who are not registered should contact the Office of Disabilities.

Any academic misconduct in this course is considered a serious offense, and the strongest possible academic penalties will be pursued for such behavior. Students may discuss high-level ideas with other students, but at the time of implementation (i.e. programming), each person must do his/her own work. Use of the Internet as a reference is allowed but directly copying code or other information is cheating. It is cheating to copy, to allow another person to copy, all or part of an exam or assignment, or to fake program output. It is also a violation of the Undergraduate Academic Code of Honor to observe and then fail to report academic dishonesty. You are responsible for the security and integrity of your own work.

In the case of a serious illness or other excused absence, as defined by university policies, coursework submissions will be accepted late by the same number of days as the excused absence.

Otherwise, late submissions will not be accepted and will be marked as a 0.

This course will be recorded using Zoom and Panopto. This system allows us to automatically record and distribute lectures to you in a secure environment. You can watch these recordings on your computer, tablet, or smartphone. In the course in Sakai, look for the "Panopto" tool on the left hand side of the course.

Because we will be recording in the classroom, your questions and comments may be recorded. Recordings typically only capture the front of the classroom, but if you have any concerns about your voice or image being recorded please speak to me to discuss your concerns. Except for faculty and staff who require access, no content will be shared with individuals outside of your course without your permission.

These recordings are jointly copyrighted by the University of Notre Dame and your instructor. Posting them to other websites (including YouTube, Facebook, SnapChat, etc.) or elsewhere without express, written permission may result in disciplinary action and possible civil prosecution.

Honor Code

CSE Guide to the Honor Code

For the assignments in this class, you may discuss with other students and consult printed and online resources. You may quote from books and online sources as long as you cite them properly. However, you may not look at another student's solution, and you may not copy any significant portions of other's solutions. Furthermore, you may not utilize AI powered tools such as Co-Pilot or Tabnine for any of your programming assignments.

The following table summarizes how you may work with other students and use print/online sources:

Resources Solutions AI Tools
Consulting Allowed Not Allowed Not Allowed
Copying Cite Not Allowed Not Allowed

See the CSE Guide to the Honor Code for definitions of the above terms.

If an instructor sees behavior that is, in his judgement, academically dishonest, he is required to file either an Honor Code Violation Report or a formal report to the College of Engineering Honesty Committee.