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 - 2:00-3:15PM (DeBartolo Hall 131)
-
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 EdSteem 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):
- Ningzhi Tang - ntang@nd.edu
- Robert Wallace - rwallac1@nd.edu
- Christian Northrup - cnorthr2@nd.edu
- Tara Flannery - tflanne2@nd.edu
- Daniel Shields - dshield2@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-sp24
- EdSteem: https://edstem.org/us/courses/51350/
- Google Calendar with Office Hours: https://calendar.google.com/calendar/embed?src=c_da3063da0bf0ee2ff413bc996ca489172ac1832e0fd62fd906460f91049ef56e%40group.calendar.google.com&ctz=America%2FIndiana%2FIndianapolis
- List of Assigned TAs per Student: https://docs.google.com/spreadsheets/d/1WUmKv-s5jE23-TMUt1aORE4owQ5a6Gj7iLDDL-UzgJ0/
- Gradescope: https://www.gradescope.com/courses/701190
- Students Machine:
- Address: student05.cse.nd.edu
- Dropbox Location:
~/esc-courses/sp24-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 professor 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).
- 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.
- Develop conceptual and physical data models using UML (Unified Modeling Language) diagrams.
- Be able to translate data between an object-oriented programming language, like Python, and a relational database using Object-Relational Mapping (ORM).
- 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 |
---|---|---|
Week 1 |
Jan 17 L1: Course Overview & Introduction Slides Activity #1 ⏰ 01/22 @ 2PM Self-assessment ⏰ 01/19 @11:59PM HW0 ⏰ 01/23 @11:59PM |
|
Week 2 |
Jan 22 L2: JavaScript-1 Slides Activity #2 ⏰ 01/24 @2:00PM |
Jan 24 L3: JavaScript-2 Slides HW1 ⏰ 02/02 @11:59PM |
Week 3 |
Jan 29 L4: JavaScript-3 Slides Activity #3 ⏰ 01/31 @2:00PM |
Jan 31 L5: JavaScript-4 Slides Activity #4 ⏰ 02/05 @2:00PM |
Week 4 |
Feb 05 L6: JavaScript-5 Slides HW2 ⏰ 2/13 @11:59PM |
Feb 07 L7: JavaScript-6 Slides Activity #5 ⏰ 02/14 @ 2PM |
Week 5 |
Feb 12 L8: JavaScript-7 & Front-end development-1 Slides |
Feb 14 L9: Front-end development-2 Slides Activity #6 ⏰ 02/19 @ 2PM HW3 ⏰ 2/27 @11:59PM |
Week 6 |
Feb 19 L10: Front-end development-3 Slides |
Feb 21 L11: EXAM 1 Guidelines |
Week 7 |
Feb 26 L12: Python-1 Slides |
Feb 28 L13: Python-2 Slides Activity #7 ⏰ 03/04 @2PM HW4 ⏰ 3/05 @11:59PM |
Week 8 |
Mar 04 L14: Python-3 Slides |
Mar 06 L15: Python-4 Slides Activity #8 ⏰ |
Week 9 | Mar 11 No Class | Mar 13 No Class |
Week 10 |
Mar 18 L16: Django-1 Slides |
Mar 20 L17: Django-2 Slides Activity #9 ⏰ 03/25 @2:0PM HW6 ⏰ 3/26 @11:59PM |
Week 11 |
Mar 25 L18: Django-3 Slides |
Mar 27 L19: REST Slides HW7 ⏰ 4/09 @11:59PM |
Week 12 | Apr 01 No Class |
Apr 03 L20: EXAM 2 Guidelines |
Week 13 |
Apr 08 L21: Java-1 Slides |
Apr 10 L22: Java-2 Slides Activity #10 ⏰ 04/15 @2:00PM HW8 ⏰ 04/16 @11:59PM |
Week 14 |
Apr 15 L23: Java-3 Slides Activity #11 ⏰ 04/17 2PM |
Apr 17 L24: Java-4 Slides HW9 ⏰ 4/23 @11:59PM |
Week 15 |
Apr 22 L25: Clojure-1 Slides Activity #12 ⏰ 04/24 2PM |
Apr 24 L26: Clojure-2 Slides HW10 ⏰ 04/30 @11:59PM |
Week 16 |
Apr 29 L27: Clojure-3 & Hackathon-1 Slides |
May 01 L28: Hackathon-2 |
Final Exam: Tuesday, May 7 4:15 PM - 6:15 PM (131 Debartolo Hall). 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 formal attendance as well as smaller class activities that involve answering a few questions related with topics covered in class/readings. Unlike all the other graded components, the activities are graded based on completion instead of correctness.
Your final course grade is computed according to the following breakdown:
Component Points Exams 55% (15% Exam 1 // 15% Exam 2 // 25% Final Exam) Project 25% Homeworks 15% In-Class Participation & Attendance 5% - Grading:
-
Grades are assigned as follows:
Grade Points Grade Points Grade Points A >=94 A- >=90 and <94 B+ >=87 and <90 B >=84 and <87 B- >=80 and <84 C+ >=77 and <80 C >=74 and <77 C- >=70 and <74 D >=64 and <70 F <64 Please note that final grades are calculated based on the score ranges outlined above and are not subject to rounding; this is to ensure fairness and transparency in the assessment process. For example, a student with a final score equals to 89.99% is within the range for B+. The final grade shown on Canvas is the grade that will be sent out to the Office of Registrar.
- 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 by 5PM on the day of the assignment's deadline. 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.
- 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.
- 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.
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.
The following table summarizes how you may work with other students and use print/online sources:
Resources Solutions AI Assistant Tools (ex: ChatGPT, GitHub Copilot, etc) Consulting ✅ Allowed ❌ Not Allowed ⚠️ Allowed only under specific conditions (see below) Copying ⚠️ Cite ❌ Not Allowed See the CSE Guide to the Honor Code for definitions of the above terms.
Policies on the Use of Text/Code Generation Tools (ex: ChatGPT, GitHub Copilot, etc.)
TL;DR: As a rule of thumb, if more than half of your assignment has been produced by an AI assistant, that corresponds to a honor code violation!
The use of text generation tools (ex: ChatGPT) or code generation tools (ex: GitHub Copilot) introduces authorship issues. As expressed above, this course expects that submitted assignments are a result of a student's individual effort (or group effort, for those assignments submitted in groups). Text/Code generation tools can include not only factual errors but also may plagiarize other works. In light of these concerns, this class will follow similar guidelines from the ACL 2023 policy on AI writing assistance. Thus, these AI tools can only be only used under the conditions outlined below. Notice that the text in blue is from the ACL 2023 policy, whereas the text written in black is what has been tailored to our class setting.
- ✅ Allowed Assistance purely with the language of the paper. When generative models are used for paraphrasing or polishing the author’s original content, rather than for suggesting new content - they are similar to tools like Grammarly, spell checkers, dictionary and synonym tools, which have all been perfectly acceptable for years. Thus, using these AI tools solely to assist with the writing is not an honor code violation.
- ✅ Allowed Short-form input assistance. Even though predictive keyboards or tools like smart compose in Google Docs are also powered by generative language models, nobody objected to them, since hardly anyone would try to use them to generate a long, unique and coherent text: it would simply not be practical. Thus, using these AI tools solely to autocomplete small pieces of text/code (i.e., words, variable names, etc) is not an honor code violation.
- ⚠️ Allowed but use with caution Literature search. Generative text models may be used as search assistants, e.g. to identify relevant literature. However, we expect the authors to read and discuss such references, just like the references identified by a regular search engine or a semantic literature recommendation tool. The usual requirements for citation accuracy and thoroughness of literature reviews apply; beware of the possible biases in suggested citations. That is, you can use AI assistant tools to help you find relevant related work or documentation for APIs/modules/libraries, but you still need to manually vet them, and cite them accordingly.
- ❌ Not AllowedLow-novelty text. Some authors may feel that describing widely known concepts is a waste of their time and can be automated. Since this is a class where the main goal is to learn, students must describe and cite widely known concepts on their own. This process should not be automated by writing assistants.
- ❌ Not AllowedNew ideas. If the model outputs read to the authors as new research ideas, that would deserve co-authorship or acknowledgement from a human colleague, and that the authors then developed themselves (e.g., topics to discuss, framing of the problem), then the text/idea should not be used for any assignment in this class.
- ❌ Not AllowedNew ideas + new text: a contributor of both ideas and their execution seems to us like the definition of a co-author, which the models cannot be. Therefore, it should not be used for this purpose in this class.
- ⚠️ Allowed with disclosure Code Generation for "Common Code": If a code generation tool (GitHub Copilot) is used similarly to StackOverflow, i.e., to understand how to write "common code" in a specific programming language (ex: how to open a file in python), that is allowed. However, the submission must disclose this use by including a comment near the generated code indicating the use of GitHub Copilot (or other tool).
- ❌ Not AllowedGenerate over 50% of the final solution. You may not under any circustances use an AI assistant to develop more than half of your final solution. For example, if the assignment asks you to implement depth-first (DFS) search using JavaScript, you may not request an AI assistant to generate the DFS implementation using JS (even if you don't use the generated code "as is" and still make minor changes, such as variable renamings, etc). Doing so is a honor code violation, and will be treated as such.
Per stated in Section 2.4.1 of 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.
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.
All regrade requests should be made on Gradescope no more than 3 days after the grades are posted (unless explicitly communicated otherwise by the professor/TA in class/edsteem/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. Re-grade requests are not intended to be used as means to negotiate points for the homework or change how many points are being deducted for a specific grading rubric item. Instead, regrade requests are intended solely to correct grading mistakes, that is, these requests shall only be made when one or more incorrect grading rubric item(s) have been applied to the submission. Grades are final once the re-grade request period has passed and will not be subject to negotiation at the end of the term. E-mails / messages requesting grade bumps and/or requeting to accept unsubmitted work will not be considered and will not be replied by the professor/TAs (as the answer to these are in the syllabus).
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.
Please notice that the lecture recording is intended to enhance the in-person experience rather than replacing it. Moreover, recordings may not always be reliable due to connectivity issues, etc. Thus, you are still required to attend the lectures in-person and attendance is one of the graded components). It is your responsibility to catch up with materials after missing the lectures.