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.
Logistics
- 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):
- Grigorii Khvatskii - gkhvatsk@nd.edu
- Latif Siddiq - msiddiq3@nd.edu
- Vinicius Lopes - vlopes@nd.edu
- 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
TAs (Graders)
TAs (For Office Hours)
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 Details
- 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
Schedule
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 ⏰ |
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 ⏰ |
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
Grades & Grading Policy
- 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 - 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 format 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.
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.
Classroom Recording Notification
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.