COMPSCI 220: Syllabus

Course Objectives

The goal of COMPSCI220 Programming Methodology is to turn you into an advanced programmer with a deep understanding of modern programming methodology. To that end, we will be using a modern programming language called Scala and use it to explore a variety of foundational topics, including functional programming, type inference, algebraic data types, and parallelism. We will also emphasize good software engineering skills, including testing, refactoring, debugging, and using the command-line. Nothing that we discuss in this class is Scala-specific. Everything that you learn is applicable to other modern languages, including JavaScript, Swift, Rust, C#, and even modern versions of Java and C++. To understand the structure of the course, you can browse the outline of topics on Moodle.

Your Grades

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

Programming Projects 80%
Discussions Assignments 10%
Exams 10%

The exact grading scheme will 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). Your current grades are available on Moodle. You must track your own performance throughout the class.


If you require any special services or accommodations during this course please make sure you 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.

No Electronics

You cannot use electronics of any kind in class. (i.e., no laptops, cell phones, tablets, Google Glasses, Apple Watches, Microsoft HoloLenses, Occulus VRs, etc.)

Honesty Policy

You must do all work in this class by yourself. If you violate this policy, you will receive an F. We use an automated program and manual checks to correlate every submitted project with all other solutions, including prior solutions. In addition, you are subject to the university’s academic honesty policy and guidelines for classroom civility. You must read both of these.

At the same time, we encourage you to talk to each other both in person and on Piazza. You may give or receive help on any of the concepts covered in lecture or discussion and on the specifics of programming language syntax. You may collaborate with other students in the class to understand problem definitions. However, you must not collaborate on the solution: any code you write must be your own. Here is a list of things that you should not do:

  1. Do not share your code code with other students.


  2. Do not share your code on Piazza. (You can share code privately with instructors.)


  3. Do not let other students borrow your computer.


  4. Do not post your code online (e.g., on Github).

    </LI> </OL>

    The list above is not exhuastive. If you have any questions, ask the instructor.

    Getting Help and Asking Questions

    During Office Hours

    The course staff have scheduled office hours. They tend to get busy so use them wisely. As a general rule, we will restrict office hour visits to at most 20 minutes. This will (1) help us serve more students and (2) help you focus your visit.

    Come to office hours prepared with specific questions or examples. Do not expect to sit in office hours and fix an assignment in front of us while we answer your questions.


    Use Piazza for all online questions. You can use Piazza to message the entire class, just the course staff, or even individual staff members.

    We encourage you to post technical questions about the reading and homework publicly. This will allow both instructors and other students to respond and everyone will get to see the answer.

    You can post anonymously if you wish, though instructors will be able to see who you are. If you don't want the class to see your question at all, send it to Instructors. This is to encourage you to ask “dumb questions”. (But, trust us: there are no dumb questions and many of your peers will have the same question and be grateful that you asked.)

    Send administrative questions to Instructors on Piazza, which includes the instructors, graders, and TAs. You’ll get a faster response if all course staff can read your question.

    If you want to discuss a sensitive matter, use Piazza to contact the instructors directly.

    Please do not send email. We will respond with “resend to Piazza”.

    Late Homework

    You have four late days to use for any sort of emergency or party. Please do not tell us you're submitting things late. We know how to program computers to track this for us.

    After that, the following policy applies: you lose 10% of your grade on an assignment for every 24 hours that an assignment is late and you receive 0 points after seven days.

    This has two consequences:

    • There is no point being more than a week late.


    • There is no point staying up late at night after the assignment is due. If you realize you’re going to be late, go to sleep, come to class in the morning, and finish the assignment after class.

      </LI> </UL>

      In addition, once an assignment is late, you lose certain privileges:

      • You will not receive help from the course staff online or in person. We will be too busy focusing on the next assignment.


      • In certain exceptional situations, we will correct trivial mistakes in your code (e.g., fixing names of required functions). However, we will not apply corrections to late assignments.

        </LI> </UL>

        So, we strongly recommend not submitting homework late.


        There is no guarantee that the assigned reading will cover everything discussed in class. Conversely, the reading may go into great depth on material the instructor thinks is unimportant. Therefore, attend class to find out what actually matters.