CSE-30332 Programming Paradigms

This Is Not The Course Website You Are Looking For

This course website is from a previous semester. If you are currently in the class, please make sure you are viewing the latest course website instead of this old one.

  • Lecture: M/W/F - 2:00-2:50PM (Jordan Hall of Science 105)
  • Instructor: Prof. Santos (preferred salutation)

    Office: 382 Fitzpatrick Hall

  • Office Hours: Check the Google Calendar link for the most up-to-date information about the office hours of the TAs and the instructor. Please check the location on Google calendar.
  • Communication:
    • We will be using only Campuswire for class discussion and communication.
    • Please understand that the TAs/professor will likely not be available outside their working/office hours (ie., the TAs/professor may be unavailable on weekends, holidays, or before 9AM or after 5PM on weekdays).
    • Posts made after hours will typically be replied on the next business day (ex: posts made on a Friday at 6PM will likely be replied on the following Monday).
  • Teaching Assistants (TAs):

      TAs (Graders)

      • Grigorii Khvatskii - gkhvatsk@nd.edu
      • Latif Siddiq - msiddiq3@nd.edu
      • Vinicius Lopes - vlopes@nd.edu

      TAs (For Office Hours)

      • Ashley Duran - aduran2@nd.edu
      • Ben Swiderski - bswiders@nd.edu
      • Gavin Uhran - guhran@nd.edu
      • Hanjing Zhu - hzhu7@nd.edu
      • Luna Chen - lchen9@nd.edu
      • Sam Neus - sneus@nd.edu

      Since this is a large class, each student in this class has an assigned TA. This TA will be your main primary contact to help you with technical difficulties and other technical questions in your assignments. You can see who is your assigned TA by looking at this spreadsheet.

  • GitHub: https://github.com/joannacss/paradigms-fa22
  • Campuswire: https://campuswire.com/c/G2239CCE2
  • Google Calendar with Office Hours: https://calendar.google.com/calendar/u/0?cid=Y190bHZqMG5hNm9udW1vMTg0a3BzMDNwYnQwOEBncm91cC5jYWxlbmRhci5nb29nbGUuY29t
  • List of Assigned TAs per Student: https://docs.google.com/spreadsheets/d/1po9ZQ6yD6ZHdCRIlfOSJnaq-MAPCdkiAN6vCy1DkME4
  • Gradescope: https://www.gradescope.com/courses/415108/
  • Students Machine:
    • Address: student04.cse.nd.edu student05.cse.nd.edu Due to OS updates made by the sysadmin, student04 is no longer suitable for us to use.
    • Dropbox Location: ~/esc-courses/fa22-cse-30332.01/dropbox
    • Although you can use the student's machines to develop your code, I strongly suggest you using your own machine.
    • The student machines are maintained by the CSE department (not the professor). Therefore, if you need any technical help, please contact csehelp@nd.edu
    • The instructor compiled a brief tutorial to use the students machines in this Google Docs.
Course Objectives:

Upon successful completion of this course, you will be able to:

  • Comprehend the differences and commonalities across functional, imperative, declarative, and object-oriented programming paradigms and their principles.
  • Develop a greater understanding of the issues involved in programming language design and implementation, such as static vs dynamic typing, data manipulation, strong vs weak typing, passing by value vs reference, callback, currying, and syntactic sugar.
  • Develop an understanding of how different paradigms manifest in different architectures, such as client-server architecture, RESTful web services, and multithreaded architecture and languages.
  • Implement several programs in languages other than the one emphasized in the core curriculum (Java/Python/Clojure/JavaScript/CoffeeScript/Ruby).
  • Develop an understanding of the compilation and interpretation processes.
  • Be able to compose abstractions for each studied programming paradigm and critically evaluate and recommend the most appropriate paradigm and language for a new problem.
ABET Outcomes
Analyze a complex computing problem and to apply principles of computing and other relevant disciplines to identify solutions. Design, implement, and evaluate a computing-based solution to meet a given set of computing requirements in the context of the program’s discipline. Communicate effectively in a variety of professional contexts. Function effectively as a member or leader of a team engaged in activities appropriate to the program’s discipline.
Text Books

All necessary materials will be provided in the lecture notes, code samples, and through weekly readings. However, some course materials have been taken from the following book, which students may choose to purchase:

  • Toal, R., Rivera, Rachel, Schneider, Alexander, & Choe, Eileen. (2017). Programming language explorations. CRC Press. eBook Online

This is the approximate schedule for the course; however, the schedule will be adapted if needed. Slide decks are linked in advance but will be modified up until the lecture.

Week # Monday Wednesday Friday
Week 1 Aug 24
L1: Introduction to Paradigms
Slides Activity 1 ⏰ 08/24 @ 3PM Self-Assessment ⏰ 08/26 @ 11:59PM HW0 ⏰ 08/30 @ 11:59PM
Aug 26
L2: JavaScript-1 (Overview)
Slides
Week 2 Aug 29
L3: JavaScript-2 (Scopes & Data Types)
Slides
Aug 31
L4: JavaScript-3 (Operators, Conditionals, & Functions)
Slides Activity 2 ⏰ 09/02 @ 2PM HW1 ⏰ 09/06 @ 11:59PM
Sep 02
L5: JavaScript-4 (Callbacks, Map, Filter, Reduce)
Slides
Week 3 Sep 05
L6: JavaScript-5 (OOP)
Slides Activity 3 ⏰ 09/07 @ 2PM
Sep 07
L7: JavaScript-6 (Data Structures in JS, Intro to Testing)
Slides HW2 ⏰ 09/13 @ 11:59PM
Sep 09
L8: JavaScript-7 (Unit Testing using Mocha, Closures-1)
Slides Activity 4 ⏰ 09/12 @ 2PM
Week 4 Sep 12
L9: JavaScript-8 (Closures-2, Review)
Slides
Sep 14
L10: CoffeeScript-1 (Overview)
Slides Activity 5 ⏰ 09/16 @ 2PM HW3 ⏰ 09/20 @ 11:59PM
Sep 16
L11: CoffeeScript-2 (Extras)
Slides
Week 5 Sep 19
L12: CoffeeScript-3 and Front-End Development-1
Slides Activity 6 ⏰ 09/21 @ 2PM
Sep 21
L13: Front-End Development-2
Slides HW4 ⏰ 09/27 @ 11:59PM
Sep 23
L14: EXAM 1
Guidelines
Week 6 Sep 26
L15: Front-End Development-3
Slides
Sep 28
L16: Front-End Development-4
Slides HW5 ⏰ 10/04 @ 11:59PM
Sep 30
L17: Front-End Development-5 Python-1 (Overview,Basics)
Slides Activity 7 ⏰ 10/03 @ 2PM
Week 7 Oct 03
L18: Python-2 (Scopes and Arguments)
Slides
Oct 05
L19: Python-3 (OOP)
Slides Activity 8 ⏰ 10/07 @ 2PM HW6 ⏰ 10/11 @ 11:59PM
Oct 07
L20: Python-4 (OOP-2)
Slides Activity 9 ⏰ 10/12 @ 2PM
Week 8 Oct 10
L21: Python-5 (Iterators, Generators, TkInter-1)
Slides
Oct 12
L22: Python-6 (TkInter-2)
Slides Activity 10 ⏰ 10/14 @ 2PM HW7 ⏰ 10/2510/26 @ 11:59PM
Oct 14
L23: Python-7 (TkInter-3 Django-1)
Slides Activity 11 ⏰ 10/24 @ 2PM
Week 9 Oct 17
No Class
Oct 19
No Class
Oct 21
No Class
Week 10 Oct 24
L24: Python-8 (Django-2)
Project Release
Slides
Oct 26
L25: Python-9 (Django-3)
Slides HW8 ⏰ 11/01 @ 11:59PM
Oct 28
L26: Django-4
Slides Activity 12 ⏰ 10/3111/2 @ 2PM
Week 11 Oct 31
L27: Django-5
Slides
Nov 02
L28: Dajngo-6 & REST
Slides HW9 ⏰ 11/08 @ 11:59PM
Nov 04
L29: REST-2 & Java-1
Slides
Week 12 Nov 07
L30: Java-2
Slides
Nov 09
L31: Java-3
Slides Activity 13 ⏰ 11/11 @ 2PM HW10 ⏰ 11/15 @ 11:59PM
Nov 11
L32: Java-4
Slides
Week 13 Nov 14
L33: EXAM 2
Guidelines
Nov 16
L34: Java-5
Slides HW11 ⏰ 11/29 @ 11:59PM
Nov 18
L35: Java-6
Project Phase 1 Due (11:59PM)
Slides
Week 14 Nov 21
L36: Clojure-1 (Functional Prog. & Basics)
Slides
Nov 23
No Class
Nov 25
No Class
Week 15 Nov 28
L37: Clojure-2 (Functions & Collections)
Slides
Nov 30
L38: Clojure-3 (Persistent Dt Structures & Transient)
Slides HW12 ⏰ 12/06 @ 11:59PM
Dec 02
L39: Course Wrap Up + Q&A
Slides
Week 16 Dec 05
L40: In-class Hackacthon-1
Dec 07
L41: In-class Hackacthon-2
Project Phase 2 Due (11:59PM)

Final Exam: Tuesday, December 13 (4:15 PM - 6:15 PM). Jordan Science Hall 105. Guidelines

Coursework:

This class includes the following graded components:

  • Exams 1 and 2 covering topics from each unit
  • Final Exam covering all topics covered in this course
  • Weekly Homeworks
  • Course Project
  • In-Class Participation & Attendance (which is graded based on smaller class activities that involve answering a few questions related with topics covered in class or readings as well as formal attendance)

Your final course grade is computed according to the following breakdown:

Component Points
Exams 50% (15% Exam 1 // 15% Exam 2 // 20% Final Exam)
Project 25%
Homeworks 20%
In-Class Participation & Attendance 5%
Grading:

Grades are assigned as follows:

Grade Points Grade Points
Grade Points A >=93 A- >=90 and <93
B+ >=87 and <90 B >=83 and <87 B- >=80 and <83
C+ >=77 and <80 C >=73 and <77 C- >=70 and <73
D >=65 and <70 F <65

All regrade requests should be made on Gradescope no more than 5 businesses days after the grades are posted (unless explicitly communicated otherwise by the professor in class/campuswire/feedback notes). Any re-grade request shall be made in case of actual grading mistakes. The re-grade request has to explicitly explain the grading mistake and what question(s) were affected by it. The TA who graded the submission will receive the request and re-grade the whole assignment.

In-Class Activities & Attendance:
Students are expected to come to class and actively participate on discussion, asking questions as well as helping peers when appropriate (see Honor Code Below). Many classes will include short hands-on activities/exercises that must be submitted during class (or by next class session). These may be used as points towards attendance. Only what is listed in Section 3.1 of the Undergraduate Academic Code are accepted as justifiable reason to miss a class session. Please notice that, per this academic code:
"For absences planned in advance, the student must inform the instructor no less than one week prior to the planned absence; and for unplanned absences resulting from injury or illness, the student must provide the instructor appropriate verification from a health services provider, as described in section 3.1.3.5, no later than two business days after the period of absence concludes."
Late Policy:

Deadlines are strictly enforced. There is a penalty of 15% for submissions up to 12hrs past the deadline. Submissions made more than 12hrs past the deadline are not accepted (i.e., they will be assigned 0). Please plan ahead your assignments.

HOWEVER...
Life Happens. We all lead densely-layered lives; therefore, one of my core values is leading with grace. As a result, I institute a “Life Clause”. Should you need it, you may invoke the “Life Clause” on THREE homeworks, and get a 2-day extension, no explanation required. To invoke a life clause, please fill out this request form at least 12 hours before (NEW as of OCT 26th)by 5PM on the day of the assignment's deadline. (e.g., if the assignment is due at 11:59PM, your request should be made by 11:59AM that day). The TAs will process the request within one business day and add the extension on Gradescope.

Notice: the life clause is only for homeworks.

  • No extensions are given to activities because they are meant to be low-stakes assignments that can help you stay on track and follow the course content. Giving extensions would defeat the purpose of these activities.
  • The project has hard deadlines and no extension will be given to any group.
  • A student who misses an exam will have their grade equals to zero.
  • No extensions will be given to the self-assessment assignment because it is an extra credit assignment meant to help you review core concepts from pre-requisites that will be important for this class.

To maintain fairness, the professor DOES NOT grant extensions on a case-by-case basis (i.e., the rules laid out in here applies to all students -- without exceptions).

Honor Code:
Students are expected to abide by the principles of intellectual honesty and academic integrity.

It is cheating to copy, to allow another person to copy, all or part of an exam or an 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.

For the individual 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.

For the group project, the same rules applies. The main difference is that you are allowed -- and expected -- to discuss specifics of the solution for the project with your team members (i.e., students in your group). However, the group may not copy a solution from elsewhere (i.e., another team, book, tutorial, etc). Any honor code violation to the project will be reported as a major violation.

Furthermore, you may not utilize AI-based tools such as GitHub Co-Pilot or Tabnine for any of your programming assignments (regardless if it is an individual or a group submission).

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

Resources Solutions AI-based 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.

The "Pencils Down" Rule: You may communicate about homework with your classmates at a high-level, give general advice, and chat about common problems. You may not communicate specific knowledge such as problem solutions or steps or planning documents. A good litmus test is if you would need to write it down to communicate or remember something, it is off limits. Seek homework help from the Professor or the TAs instead.

Per stated in Section 2.4.1 in the Undergraduate Academic Code of Honor "Faculty and anyone else responsible for teaching or assisting in a course will not tolerate academic dishonesty.". Therefore, if an instructor sees behavior that is academically dishonest, that professor is required to file either an Honor Code Violation Report (HCVR) or a formal report to the College of Engineering Honesty Committee.

This course will be recorded using Panopto. This system allows us to automatically record and distribute lectures in a secure environment. You can watch these recordings anytime, anywhere, on any device. In Canvas, look for the "Panopto" tool on the left hand side of the course. 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.