Programming Methologies, Spring 2020


Jaime Davila and Marius Minea


This course will not make use of a textbook. Materials will be provided electronically.

Course goals:

The goal of COMPSCI220 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 not teach you anything language-specific. Everything that you will learn in the class will be applicable to other modern languages, including (for example) Swift, Rust, C#, Java, D, Python, Go, and C++.


To succeed in COMPSCI 220, students should already understand:

  1. Loops
  2. Variables (declaration and scope)
  3. First-order functions
  4. Recursive functions with integer arguments
  5. A few algorithms and data structures including lists, trees, and recursion

Course objectives

Students who complete COMPSCI 220 understand the following topics:

  1. Programming with abstraction (higher-order functions, and object-oriented programming)
  2. Programming with recursively-defined data structures (e.g., trees and lists)
  3. An accurate mental model of programming languages that support mutable state, assignable variables, objects, higher-order functions, and garbage collection.
  4. Testing
  5. Design patterns


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 documented disability on file with Disability Services, you may be eligible for reasonable accommodations in this course. If your disability requires an accommodation, please notify your instructors as early as possible in the course so that we may make arrangements in a timely manner.

If you require any special services or accommodations during this course, you must register with Disability Services within the first two weeks of this course. This will give us time to plan accordingly to ensure that you get the help you need before it is too late. If you contact us after the two weeks we may not be able to provide you the help you need.

Honesty Policy

We will guide ourselves by the university’s academic honesty policy and guidelines for classroom civility. You must read both of these.

Grade calculation (subject to change)

Several factors determine your grade in this course. They are weighted approximately as follows:

Component Weight
Projects: programming component 40%
Mid-Term 1 20%
Mid-Term 2 20%
Final exam 20%

The exact grading scheme may be adjusted during the course. However, a typical breakdown of percentages and final grades for this course are A (93-100), A- (90-92), B+ (87-89), B (83-86), B- (80-82), C+ (77-79), C (73-76), C- (70-72), D+ (67-69), D (60-66), F (0-59).