Programming Methology, Spring 2026

Instructors

Section 1: James Perretta (jperretta at umass), LGRC A211E
Section 2: Marius Minea (marius at cs.umass), LGRC A341

Lectures: TuTh 2:30-3:45pm (sec. 2), 4-5:15pm, Goessmann 64 (sec. 1)
Labs: Wednesdays, see SPIRE for section information
Course Staff:
TAs: Eduardo Calle Ortiz, Victor Chen, Piyush Maheshwari, Ayesha Binte Mostofa, Angela Upreti. Han Yang
UCAs: Lucy Gavrich, Atharva Shahane (head UCAs), Jayakrishna Kambhampati, Tory Leone, Sean Lin, Mihir Nagarkatti, Ali Nejmeldeen, Omar Osman, Fardeen Riaz Ahamed, Harish Shankar, Venkatraman Varatharajan, Advaya Venbakkam
Supplemental Instruction: TBA, schedule on Canvas
Tutoring: CICS offers individual tutoring for CS220, details and signup link will be posted on Campuswire.
Office hours: see schedule on Campuswire and Canvas (TBA)
We encourage you to participate in office hours: this is a smaller, more personalized setting where we can discuss differently than in a large classroom. Your contribution to office hours helps create a learning community: you interact with other colleagues; this can help both you and others who might have similar questions or benefit from seeing a different approach or viewpoint. It also helps us instructors get to know you and have a better view on how the course progresses.
Textbook: This course does not use a textbook. Materials will be provided on Canvas and the GitHub course page

Course Goals

The goal of COMPSCI 220 Programming Methodology is to turn you into an advanced programmer with a deep understanding of modern programming methodology. We will emphasize good software engineering skills, including programming abstractions, testing, and debugging. Although the programming language that we will use is JavaScript, we will emphasize general programming principles. Everything that you will learn in the class will be applicable to other modern languages, including (for example) C++, C#, D, Go, Java, Python, Rust, and Swift.

Learning Outcomes

As a successful student, by the end of this course, you will be able to::

Prerequisites

To succeed in COMPSCI 220, you should be familiar with the following concepts (from the required prerequisite course, COMPSCI 187):

  1. Loops
  2. Variables (declaration and scope)
  3. Defining and using functions to decompose problems
  4. Recursive functions with integer arguments
  5. Algorithms and data structures, including lists, trees, and recursion
It is helpful to review these topics if needed. If you feel insufficiently familar with one of these topics, please speak to course staff immediately. Canvas also has guidelines for writing and testing your code.

Grading, exam schedule and make-up policies

Your grade for this course will be composed of several different aspects weighted according to the tentative breakdown below. You must notify the instructor in advance if you are unable to take the exams at the scheduled time (e.g., due to illness). If a severe accident prevents you from communicating (or asking someone else to do it), you must notify the instructors as soon as you are able to. Failure to do this and missing the exam results in a grade of zero.

Letter grade thresholds:
90: A
86: A-
82: B+
78: B
74: B-
70: C+
66: C
62: C-
58: D+
54: D

These thresholds are tentative and may be adjusted based on the overall performance in the course, but will not be more strict.

Attendance, late submission and exemption policies

You are expected to attend lectures -- this is the best way to engage in discussion and understanding of the material. Lecture questions (and attendance) are part of the course grade. If you cannot attend (e.g., for medical reasons), you are expected to watch the lecture recordings. Lab attendance is mandatory and part of the course grade. If you cannot attend a lab (e.g., for medical reasons), you must notify the TA leading your lab section ahead of time and discuss how to make up the lab activity.

Turning homework in late helps no one. When you turn homework in late, you cannot receive feedback on time and risk falling behind, as the course has moved on to the next topic. Instructors cannot detect what material needs to be re-emphasized, etc. Because of this, the general rule is that late homework will not be accepted. The only exception to this are justified medical or personal situations that fall outside the ordinary. In these cases, you must notify the instructors ahead of time and request an extension. We will review your request and decide if an extension is warranted.

All homework will be due at 11:59 PM on the due date. You should start homework early. A sudden happening on the due date, when you had planned on doing most of the work is not a reason for an extension. Please allow time to check and make sure you've submitted everything properly, and avoid any unexpected issues (slow Internet connection, uploading the wrong file in a hurry, leaving extraneous code in, etc.) Also, expect assignments to require several programming and testing sessions to complete. We suggest you begin working on them early, so we can all collaborate and help each other with any questions in a timely way.

Academic Honesty and Collaboration Policy

University Statement: UMass Amherst is strongly committed to academic integrity, which is defined as completing all academic work without cheating, lying, stealing, or receiving unauthorized assistance from any other person, or using any source of information not appropriately authorized or attributed. As a community, we hold each other accountable and support each other’s knowledge and understanding of academic integrity. Academic dishonesty is prohibited in all programs of the University and includes but is not limited to: Cheating, fabrication, plagiarism, lying, and facilitating dishonesty, via analogue and digital means. Sanctions may be imposed on any student who has committed or participated in an academic integrity infraction. Any person who has reason to believe that a student has committed an academic integrity infraction should bring such information to the attention of the appropriate course instructor as soon as possible. All students at the University of Massachusetts Amherst have read and acknowledged the Commitment to Academic Integrity and are knowingly responsible for completing all work with integrity and in accordance with the policy: (https://www.umass.edu/senate/book/academic-regulations-academic-integrity-policy)

Course specifics: In COMPSCI 220, you are encouraged to form study groups, learn and discuss the course material jointly with others.
You are required to work individually on all items resulting in a grade. In particular, it is forbidden to share homework code or solution ideas.
You are encouraged to ask public questions, in office hours or on Campuswire. Your questions and the answers to them can be useful for others as well (and you are encouraged to help with answers). Public questions about homework should be of a general nature (clarification, applicable course material), and not involve code snippets or specific solution ideas. Use private questions otherwise if needed.
This course assumes that all work submitted by students will be generated by the students themselves, working individually or in groups. Students should not have another person/entity do the writing of any portion of an assignment for them, which includes hiring a person or a company to write assignments and using artificial intelligence tools like ChatGPT.

As members of the College of Information and Computer Sciences at UMass Amherst we expect everyone to behave responsibly and honorably. In particular, we expect each of you not to give, receive, or use aid in examinations, nor to give, receive, or use unpermitted aid in any academic work. Doing your part in observing this code, and ensuring that others do likewise is essential for having a community of respect, integrity, fairness, and trust.
If you cheat in a course, you are taking away from your own opportunity to learn and develop as a professional. You also hurt your colleagues, and this will hurt people you will work with in the future, who expect an honest and responsible professional.
As faculty, we pledge to use academic policies designed for fairness, avoiding situations that are conducive to violating academic honesty, as well as unreasonable or unusual procedures that assume dishonesty.

Academic dishonesty as defined by the University's Academic Honest Policy includes but is not limited to:

Any violation of the Academic Honesty Policy could result in a failing grade in COMPSCI 220 and initiation of the formal Academic Honesty Procedures of the University. Students are expected to be familiar with these policies, if you have any questions please email the course instructors for clarification.
The College of Information and Computer Sciences explicitly forbids any redistribution (including publicly available posting on an internet site) of any CICS course materials (including student solutions to course assignments, projects, exams, etc.) without the express written consent of the instructor of the course from which the materials come. Violations of this policy will be deemed instances of “facilitating dishonesty” (since a student making use of such materials would be guilty of plagiarism) and therefore may result in charges under the Academic Honesty Policy.

Accommodation Statement

The University of Massachusetts Amherst is committed to making reasonable, effective, and appropriate accommodations to meet the needs of students with disabilities and help create a barrier-free campus. If you have a disability and require accommodations, please register with Disability Services, meet with an Access Coordinator in Disability Services, and send your accommodation letter to your faculty. Information on services and registration is available on the Disability Services website (https://www.umass.edu/disability/).

Title IX Statement

In accordance with Title IX of the Education Amendments of 1972 that prohibits gender-based discrimination in educational settings that receive federal funds, the University of Massachusetts Amherst is committed to providing a safe learning environment for all students, free from all forms of discrimination, including sexual assault, sexual harassment, domestic violence, dating violence, stalking, and retaliation. This includes interactions in person or online through digital platforms and social media. Title IX also protects against discrimination on the basis of pregnancy, childbirth, false pregnancy, miscarriage, abortion, or related conditions, including recovery. There are resources here on campus to support you. A summary of the available Title IX resources (confidential and non-confidential) can be found at the following link: https://www.umass.edu/titleix/resources. You do not need to make a formal report to access them. If you need immediate support, you are not alone. Free and confidential support is available 24 hours a day / 7 days a week / 365 days a year at the SASA Hotline 413-545-0800.

Inclusivity

At the Manning College of Information and Computer Sciences, we believe that you belong in computing. We welcome and value all individuals, regardless of previous computer science experience, age, citizenship, disability, sex, gender identity, military experience, political views, race, religion, or sexual orientation, while maintaining an environment that celebrates, welcomes, and honors those differences.

We’re committed to supporting all our students through their journeys in computer and information sciences–especially students from identities and backgrounds that are still underrepresented in our field. Diverse perspectives on the challenges our society faces animate our vision of Computing for the Common Good. Your insight, talents, and skills are needed to protect and improve an ecosystem that relies on the combined efforts of the greatest technical minds, and we believe your place is here.

Chosen names and pronouns

Everyone has the right to be addressed by the name and pronouns that they use for themselves. Students can indicate their preferred/chosen first name and pronouns on SPIRE, which appear on class rosters. Please let me know what name and pronouns I should use for you if they are not on the roster. A student’s chosen name and pronouns are to be respected at all times in the classroom.

List of books or other equipment or technology required

No textbook is required for this course. The course is coding-intensive and it is expected that you have access to a computer and the internet whenever you plan to work. We use Canvas for course material and quizzes, Campuswire for communication, and Gradescope for homework submission.

Communication policy and response frequency

We use Campuswire for communication. We attempt to answer all questions within 24 hours, often much sooner, but you should not rely on last-minute questions for help on homework. When needed, use private instructor-only posts rather than e-mail, this makes them more readily seen, and any of the staff team can answer. For sensitive private matters, email the instructor.

Schedule and topics (subject to change)

Week Topics
1 Introduction and Higher-order functions
2 Intro to TypeScript. Mental Models
3 Unit Testing
4 More Higher-Order Functions and Type Signatures
5 Closures
6 Lists
7 More Closures. Decorators
8 Object Oriented Programming 1
9 Midterm 1 review
10 Property-based testing
11 Observer Pattern
12 Object-Oriented Programming 2
13 Iterators and Generators1
14 Iterators and Generators 2
15 TBD
16 Designing and Extending Libraries
17 Midterm 2 Review
18 Ethics module
19 Asynchronous Programming 1)
20 Asynchronous Programming 2
21 Program Correctness 1
22 Program Correctness 2
23 Building an Interpreter 1
24 Building an Interpreter 2
25 Visitor Pattern
26 Final Review