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 (DeBartolo Hall 138)
-
Instructor: Joanna C. S. Santos
- Office: 382 Fitzpatrick Hall
- Office Hours: Check the Google Calendar link for the most up-to-date information.
- We will be using Piazza for class discussion. Rather than emailing questions to the teaching staff, I encourage you to post your questions on Piazza.
- Teaching Assistants (TAs):
- Amrit Poudel - apoudel@nd.edu
- Pedro Alarcon Granadeno - palarcon@nd.edu
- Luke Siela - lsiela@nd.edu
- Vincent Goyette - vgoyette@nd.edu
- Emily Hieatt - ehieatt@nd.edu
- Rafael Mendizabal - rmendiza@nd.edu
- Gehrig Chao - gchao2@nd.edu
TAs (Graders)
TAs (For Office Hours)
See this Google Calendar link for most up-to-date information on the office hours of the TAs and the instructor.
- Dropbox HW Submission Directory:
/escnfs/courses/fa21-cse-30332.01/dropbox/your-net-id
- GitHub: https://github.com/joannacss/cse30332-programming-paradigms
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 23 Introduction to Paradigms Slides Activity #1 Due: 08/23 @ 3PM |
Aug 25 JavaScript-1 (Overview) Slides Activity #2 Due: 08/27 @ |
Aug 27 JavaScript-2 (Functions) Slides |
Week 2 |
Aug 30 JavaScript-3 (Map,Filter,Reduce) Slides Activity #3 Due: 09/01 @ 2PM HW1 Due: 09/03 @ 11:59PM |
Sep 01 JavaScript-4 (Objects) Slides |
Sep 03 JavaScript-5 (OOP Review & Closures) Slides Activity #4 Due: 09/06 @ 2PM HW2 Due: 09/10 @ 11:59PM |
Week 3 |
Sep 06 JavaScript-6 (Concept Review) Slides Activity #5 Due: 09/08 @ 2PM |
Sep 08 JavaScript-7 Data Structures, Promises, Q&A Slides |
Sep 10 CoffeeScript-1 (Overview) Slides HW3 Due: 09/17 @ 11:59PM |
Week 4 |
Sep 13 CoffeeScript-2 (Extras) Slides Activity #6 Due: 09/15 @ 2PM |
Sep 15 Unit Tests with Mocha Slides |
Sep 17 Front-End Development-1 Slides HW4 Due: 09/25 @ 11:59PM |
Week 5 |
Sep 20 Front-End Development-2 Slides |
Sep 22 EXAM 1 |
Sep 24 Front-End Development-3 & Exam 1 Discussion Slides Activity #7 Due: 09/27 @ 2PM HW5 Due: 10/01 @ 11:59PM |
Week 6 |
Sep 27 Python-1 (Overview) Slides Activity #8 Due: 09/29 @ 2PM |
Sep 29 Python-2 (Functions, Scope, OOP-1) Slides Activity #9 Due: 10/01 @ 2PM |
Oct 01 Python-3 (OOP-2) Slides HW6 Due: 10/08 @ 11:59PM |
Week 7 |
Oct 04 Python-4 (TkInter - Part 1) Slides Activity #10 Due: 10/06 @ 2PM |
Oct 06 Python-5 (TkInter - Part 2) Slides |
Oct 08 Python-6 (Developing a Game) Slides HW7 Due: 10/15 @ 11:59PM |
Week 8 |
Oct 11 Python-7 (Django - Part 1) Slides |
Oct 13 Python-8 (Django - Part 2) Slides Activity #11 Due: 10/15 @ 2PM |
Oct 15 Python-9 (REST & Django) No HW today, enjoy the break Slides |
Week 9 |
Oct 18 No Class - Mid-Term break |
Oct 20 No Class - Mid-Term break |
Oct 22 No Class - Mid-Term break |
Week 10 |
Oct 25 Ruby-1 (Basics) Project Release Slides Activity #12 Due: 10/27 @ 2PM |
Oct 27 Ruby-2 (Symbols, OOP, Scopes) Slides Activity #13 Due: 10/29 @ 2PM |
Oct 29 Java-1 (Basics & OOP-1) Slides HW8 Due: 11/05 @ 11:59PM |
Week 11 |
Nov 01 Java-2 (OOP-2 & Packages) Slides |
Nov 03 Java-3 (Packages, Data Structures) Slides Activity #14 Due: 11/05 @ 2PM |
Nov 05 Java-4 (Generics & Special Methods) Slides HW9 Due: 11/12 @ 11:59PM |
Week 12 |
Nov 08 Java-5 (Exception Handling, Multithreading-1) Slides |
Nov 10 Java-6 (Multithreading-2) Slides |
Nov 12 Java-7 (Multithreading-3) Slides HW10 Due: |
Week 13 |
Nov 15 EXAM 2 Checklist |
Nov 17 Clojure-1 (Functional Prog. & Basics) Slides |
Nov 19 Clojure-2 (Functions & Collections) Slides |
Week 14 |
Nov 22 Clojure-3 (Persistent Dt Structures & Transient) Project Phase 1 Due (11:59PM) Slides HW11 Due: 12/01 @ 11:59PM |
Nov 24 No Class - Thanksgiving Holiday |
Nov 26 No Class - Thanksgiving Holiday |
Week 15 |
Nov 29 In-class Hackacthon-1 |
Dec 01 In-class Hackacthon-2 |
Dec 03 In-class Hackacthon-3 |
Week 16 |
Dec 06 Course Wrap Up + Q&A Project Phase 2 Due (11:59PM) Slides |
Dec 10 FINAL EXAM 4:15-6:15pm in 138 DeBartolo Hall Checklist |
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 40% (10% Exam 1 // 10% Exam 2 // 20% Final Exam) Project 25% Homeworks 30% 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. These may be used as points towards attendance.
- Late Policy:
-
Deadlines are strictly enforced. [NEW as of October 11th, 2021] The class will now start accepting late submissions. However, there is a penalty of 10% for submissions up to 24hrs past the deadline. Submissions made more than 24hrs past the deadline are not accepted (i.e., they will be assigned 0). Late submissions are accepted if (a) the student make prior arrangments with the instructor, or (b) the student has a university-approved reason (and notified the instructor in advance). Please plan ahead your assignments. In case of justifiable exceptional circunstances (ex: sickness, interviews, etc -- as listed in Section 3.1 of the Undergraduate Academic Code), please communicate with the instructor as soon as possible (and prior the deadline if humanly feasible) to make arrangements. Please fill in this ABSENCE REQUEST FORM if you are going to miss a class or request permission to submit an assignment late.
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” onONETWO assignments, and get 3-day extension: no explanation required. To invoke a life clause, please send a message to the instructor via Piazza.[NEW as of October 11th, 2021] The life-clause counter has been "reset". Effectively, this means students can invoke the life clause up to 2 times.
To maintain fairness, the instructor 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.
The following table summarizes how you may work with other students and use print/online sources:
Resources Solutions Consulting ✅ Allowed ❌ Not Allowed Copying ⚠️ Cite ❌ 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.
Any re-grade request shall be made no more than 5 days after the grades are posted (unless specified otherwise in class, via piazza, or on feedback notes).
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 Sakai, 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.