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++.
Although JavaScript is important to known, it has several poorly-designed features that make it a particularly bad programming language for teaching. to alleviate this problem, we use a language-level for JavaScript that uses both static and dynamic checks to make JavaScript more well-behaved.
To succeed in COMPSCI 220, students should already understand:
Students who complete COMPSCI 220 understand the following topics:
You cannot use electronics of any kind in class. (i.e., no laptops, cell phones, tablets, Google Glasses, Apple Watches, Microsoft HoloLenses, etc.)
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.
The lack of sufficient diversity is an important problem in computer science. In this course, we want to help improve the situation, not make it worse. The responsibility to do that lies both with instructor, the TAs, the UCAs, and the students. All course-related activities, including online interactions, are to be treated as professional activities exclusively. If anything in the course prevents you from learning or makes you uncomfortable, you’re encouraged to bring it up with the instructor. Alternatively, the university has several resources that can help.
All projects in this course are to be done by you and you alone. Violation will result in an immediate F grade for the course and possible initiation of the formal procedures of the University. We use an automated program and manual checks to correlate projects with each other and with prior solutions.
At the same time, we encourage students to help each other learn the course material. As in most courses, there is a boundary separating these two situations. 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 are allowed to consult with other students in the current class to help you understand the project specification (i.e., the problem definition). However, you may not collaborate in any way when constructing your solution: the solution to the project must be generated by you working alone. You are not allowed to work out the programming details of the problems with anyone or to collaborate to the extent that your programs are identifiably similar. You are not allowed to look at or in any way derive advantage from the existence of project specifications or solutions prepared elsewhere.
If you have any questions as to what constitutes unacceptable collaboration, talk to the instructor right away. You are expected to exercise reasonable precautions in protecting your own work. Don’t let other students borrow your account or computer, don’t leave your program in a publicly accessible directory, and take care when discarding printouts.
In addition, you are subject to the university’s academic honesty policy and guidelines for classroom civility. You must read both of these.
To ensure that you do not run afoul of the academic honesty policy, follow these rules:
You need to login to Gradescope(https://gradescope.com) using your @umass.edu email address to submit homework and check your grades. We will enroll you during the first week of class. If you are not enrolled, ask on Pizza.
Several factors determine your grade in this course. They are weighted approximately as follows:
Component | Weight |
---|---|
Projects: programming component | 30% |
Projects: written component | 30% |
Mid-Term 1 | 20% |
Mid-Term 2 | 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).
You have eight late days to use for any sort of emergency or party. You do not need to tell us you’re submitting late. We have written a program to track late days.
Note that we often have two assignments with the same release and due dates. E.g., we usually release Programming 1 and Written 1 on the same day and have them due on the same date. For the purpose of late day calculation, they are independent assignments. So, if you submit both Programming 1 and Written 1 one day late, then you have used two late days.
After the eight late days, the following policy applies: you lose 10% of your grade on an assignment for every 24 hours that an assignment is late.
This has two consequences:
After 10 late days, you get zero points
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, and work on the assignment after you’re refreshed.
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). We will be less generous if you submit late.
So, we strongly recommend not submitting homework late.