Monday, Wednesday, Friday 1:25PM–2:15PM Eastern Time, Goessman Laboratory. Attendance is encouraged, although videos of the lectures will be posted on Moodle from ECHO 360 and/or Zoom. Should it be necessary to switch back to remote instruction for any reason, I will make that change without disruption to the class.
To encourage attendance, I will be giving out a password every lecture. Attending at least half of the classes (in-person or remotely) will give you the full participation credit. Attendance will be recorded by filling out a google form during lecture time, and suppling a password I will give out.
Programming is a difficult concept for many people to start learning. It has a lot of technical language, is heavily reliant on both philosophy and mathematics, and has a very insular culture. I personally think anyone is capable at excelling in computer science. We just need to cut work together to find where your understanding lies. Because the topic can be fairly difficult, I do not want this class to difficult. Projects may ask a lot of you, and the occasional quiz question may be challenging, but they will all be graded fairly, and with ample opportunity for extra credit.
If at any point in the course you feel lost, or for whatever reason have pulled away from the course, please let me know. I'll be more than happy to work with you and catch you up to speed on anything that you have missed.
-???
-???
-Or post on piazza for appointment at different time.
Office hours held over Zoom will be at this link; https://umass-amherst.zoom.us/j/95380935979 Changes to this will be posted on piazza, and sent to your email through it.
All course staff will also hold office hours, so there will be at least one every weekday. Info for each course staff member's office hours will be posted on Piazza.
Our main form of communication outside of the course comes in the form of Piazza. Piazza is a Q&A service that allows for posting public and private questions relating to the course. I'll be allowing fully anonymous posting to encourage more posting, and more honest posts.
You should always post on the course Piazza first. This allows everyone to benefit from your question. If it is something specific to your implementation or would require you to share a bit of code, you should post privately on piazza.
You should only email me in the case of a capital E Emergency, not for late submission requests, grading questions, or homework help (all of that is perfect for piazza). careilly@cs.umass.edu Put CS119 in the subject line.
If you are uncomfortable emailing me for whatever reason, you can email any of the TAs in the class instead. Their contact information will be on the top of the Moodle.
Computer Science Companion, 5TH Edition, 2020 Printing, ISBN 9781792446696, $29.40 (paper) or $18.90 (digital, 180 day subscription), ©2020, by Bill Verts.
Personally, I recommend that you get the paper edition because you can make notes in it during class and will own it forever. The Computer Science Companion is a required text for COMPSCI 119, 120, and 145. Order from: https://he.kendallhunt.com/product/computer-science-companion (cheaper than buying through spire)
If you cannot afford the book, we can make out specific arrangements to supplement your instruction without it. That will mostly entail reading online resources I've linked and watching videos. As well an alternate for a specific project can be provided.
In general I am a proponent of looking things up online. It is, in all honesty, how the vast majority of computer science gets accomplished. If websites like Stack Overflow went down, software engineering would be set back by about twenty years.
HOWEVER, you should never look for exact solutions to assignments in this course. That is antithetical to taking the course in the first place. We are here to learn how to arrive at a solution, not how to copy and paste a solution from a website.
I promise it is entirely obvious when someone has found a solution online. Every semester I need to fail one of my student for their egregious disregard of Academic Honesty, please don't let it be you.
It is better to get 20% on an assignment or have to take a few late days, when the alternative is getting a zero in the course and a write up to your dean of students.
You are expected to do all work on your own personal computer. For the lectures I will primarily use a PC running Windows 10. You may use either a Windows computer, an Apple computer, or a computer running Linux. A CHROMEBOOK CAN BE USED TOO BUT IT IS NOT PREFERABLE.
The programming environment we use is Python 3 with VSCode (link). When we install VSCode, we will also need to download the python extension for VSCode. There are versions that run on either PC, Mac, or Linux.
Download and install the appropriate (most current) Python and IDLE environment from http://www.python.org/ (Mac users also have an older version of Python already installed, accessible from the Terminal application, but we won’t be using that).
You may use another Python environment if you prefer, IDLE, Spyder, or PyCharm. I cannot answer questions specific to those environments; all instruction and debugging will be based on VSCode and compiling by hand.
IF YOUR COMPUTER CANNOT DOWNLOAD VSCODE OR PYTHON: There is another option, many online compilers for python exist that require only an account and a stable internet connection. Chief among them is repl.it and is the one I recommend for this course, although you may use another if you prefer.
I expect that few students coming in to COMPSCI 119 have any experience in writing computer programs in any language. Some do, and that’s cool, but I am assuming that students have no relevant experience. At the end of the course, however, I expect students to be given any reasonable problem description and then write a Python program that solves that problem. The resulting program does not have to be the most efficient or well-written, but it must run to completion without crashing. Students must be able to modify an existing program to do new tasks and must be able to find and correct errors in that program.
This course will require a substantial amount of work from and a serious commitment on the part of each student, and some students may spend many hours writing, debugging, and running their programs before those programs are ready to be turned in and graded. Partial, incomplete, or broken programs don’t count: a program that crashes isn’t ready to be turned in. Even if the program is 1,000 lines long, if it doesn’t work don’t turn it in.
Any program that you turn in must run to completion. If it contains syntax errors that prevent it from running at all, or contains bugs that cause it to crash, it will receive a score of ZERO.
Any program that you turn in must contain your name in a comment at the start of the program. A program turned in without your name on it will receive a score of ZERO.
More information on assignments can be found at these two pages 1, 2
1. DO YOUR OWN WORK, INCLUDING HOMEWORK AND PROJECT WORK. You may discuss homework and project assignments with other students, but you may not share files or code. Upon discovery of duplication, I will contact you for a conference, as required in the guidelines set out by the University of Massachusetts Academic Honesty Policy, and we will resolve the issue according to those guidelines. See:
http://www.umass.edu/dean_students/academic_policy/
https://www.umass.edu/honesty/
2. Students who are registered through Disability Services should arrange for accommodations as soon as possible. I am more than happy to accommodate any and all of a student's needs, but it has to be done through the proper channels. See:
http://www.umass.edu/disability/
3. You are welcome in my classes, no matter your identity or background. Discrimination against or harassment towards any person because of identity or background (or for any other reason) will not be tolerated and will be reported to the appropriate authorities in the prescribed manner.
Here is a general sense of the topics we will cover. The order of topics listed here is not set in stone – topics will be rearranged or modified as I deem appropriate. Many of these topics can be covered in a lecture or two; others may take several weeks.
Basic data types (int, float, bool, complex) and variables
Python from the command line
Flowcharts and program structure
Simple sequential Python programs, assignment, and the input and print statements
Predefined functions and parameter passing, import of predefined libraries
Type conversion functions (str, int, float, etc.)
The if (if, if-else, if-elif-else) and while statements, and how they differ, and indentation
Interactive loops, error checking, and exception handling (try-except and try-finally)
User-defined functions (the def and return statements), parameter passing, custom library modules
Intermediate statements (pass, nested functions, global variables, etc.)
Advanced data types (lists, tuples, strings, dictionaries), string and list slicing, byte arrays
Advanced techniques for building lists (range, list comprehensions, list multiplication)
Advanced control structures (for, lambda, map, passing functions as parameters, break, continue)
Introductory Data Science with Python
Using existing Libraries to Solve Problems
File access (reading and writing text files and binary files)
Image and sound creation (.WAV and .BMP files, sine waves, DTMF tones, colors, lines, circles, etc.) Note that Computer Graphics will be represented by a major number of programming examples and will span several lectures. You will need to type in and debug a lot of code from the book
Game Programming and Game Design
Modern AI as a product and tool
And many more!
Approaches to program design, evaluating alternative data structures and design techniques
Debugging, debugging, debugging, (oh, and did I mention debugging?)
Really advanced topics (recursion, object-oriented Python), if there is time