CS120 Fall 2018

Course web page: http://www.cs.binghamton.edu/~pmadden/courses/cs120
Instructor: Prof. Patrick H. Madden email pmadden@acm.org
Lectures: A0 12-1 in UU108, B1 9:40-10:40 in UU215 TAs: Fatemeh Tahmasbi (ftahmas1 at binghamton dot edu) and Mohammad Khasawneh (mkhasaw1 at binghamton dot edu)
2018 Course Syllabus

There are multiple lab sections; check with BUSI for times.  You must attend the lab session you are assigned to.  There are too many students to deal with anyone switching sections.  If you do not attend your s ection, you won't get credit for the lab.

Text: Harris & Harris, which you can find in the Binghamton on-line bookstore, or you can find Harris & Harris, Digital Design and Computer Architecture ARM EDITION  on Amazon

Note: we are using the ARM version of the textbook this year, not the MIPS version as in prior years.

C Programming appendix from the textbook.
Textbook resources
Tutoring is available through UPE -- If you're lost, there are people who would be happy to help you.
You might also want to join the ACM student chapter; lots of helpful people there too.

We will use Arduino UNOs for some labs. We will have some for use in lab, but you might want to buy one of your own to play with outside of class. They really are pretty cool, and cheap. You can find them for anywhere from about $5 to about $20 on-line.  You may be able to pick up an Arduino from someone who took the class in a prior semester (there are a couple of earlier models; the Duemilanove should be fine). Amazon is a good place to get them.  You can also look at Sparkfun, Adafruit, and NKC. You can also get them at Unicorn Electronics.  The people at Unicorn Electronics are really nice; if you want to have a successful career in computer science, you should get used to the idea of tinkering with stuff and trying things out, in your spare time -- and Unicorn has lots of fun stuff to tinker with.  Unicorn is good.

Unicorn Electronics -- A local store to buy parts at
Recommended: check out TopCoder algorithms competitions, to get an idea of the sort of folks you'll be up against in the job market.
Highly recommended: join the ACM Student chapter, and try the local programming contests. The ACM Code of Ethics is a worthwhile read, to know what will be expected of you as a computing professional.

Don't underestimate the value of taking notes.


  • Three exams (25% each). Two during the semester, plus a final.
  • Lab attendance and participation. 15%
  • In-class quizzes: 10% total
There will be about 11 lab sessions; you can miss one of these. After that, the 15% will be reduced by the portion of labs missed (for example: suppose there are in fact 11 labs, and you miss two -- the first one does not impact you, but the second reduces the grade by 1.5%). If you are physically present in the lab, but your mind is not there, you will not get credit -- the TAs are the final authority on if you've put in the effort or not.

In-class quizzes are similar; you can miss two, and then they start knocking down your grade. Quiz sheets will be handed out at the start of class, and then if you're paying attention, you might notice some of the quiz questions are going to get worked on the board. Fill in the quiz, and hand it in at the end of class. The quizzes will be "graded" simply for a name check, and to see if you were paying a bit of attention. There's a good chance that questions on quizzes will also show up on the exams.

Useful stuff:

Don't worry about the letter grade too much -- the objective is to learn some useful material, and build the skills you'll need for a career in computer science. At some point, you may want to get a job, which will almost certainly involve an interview. If you don't know the material thoroughly, your GPA won't help you at all. A high GPA won't help you on the job either. The only thing that really matters is what you can do, and how you do it.  If the grade is all you're worried about, I'd suggest pursuing a degree at Thunderwood College.
All exams are closed book/closed notes.  No calculators, cell phones, pagers, CB radios, and so on.  Bring a pen or pencil.  There will be scratch paper available.

The in-class quizzes will happen roughly once a week, but won't be announced in advance. There are morning and afternoon sessions; they may not have quizzes on the same day. So, make your life easy: show up to class, and be paying attention. Part of the training for a career in computer science is learning how to show up on time and get work done.  Being in class with your brain turned on is part of this training. The course grade is based on showing up and doing the work; having a good excuse does not remove this requirement.  If there is a disaster of some sort which prevents you from attending class, you can withdraw; the University has policies in place to handle this.
Lab Attendance is Required.  Show up on time to lab, ready to work.  The TAs are under strict orders to not give credit to anyone who shows up late.  Do not use your cell phones or surf the web during lab; the TAs are also under orders to not give credit to those not focused on the work.  You may miss or fail to complete one lab for any reason; after this, your final grade starts to drop..  You will not get credit for attending another lab, and there are no make-ups.  Be in the right place, at the right time, and get the work done.  There will be some homework problems; you will bring these to lab to have them checked, and you will be able to have the TA help you if needed.
If you have a laptop or tablet, use it for taking notes, not playing games.  Bring paper and pencil/pen.  Take notes during class, and pay attention.  The lecture format of instruction has been going on for thousands of years, for good reason -- if you listen, pay attention, and take notes, you'll learn something.  If you don't, you won't.  Office hours are available if you're having trouble keeping up in class, but if you don't have any notes, you won't get much sympathy during office hours.
The point of the class is to learn the material, and to develop the skills you will need for a successful career in computer science. If you're not interested in the material, please find another profession, and go do that.
Grade ranges are typically [90-100%] = [A- to A], [80-90%]=[B- to B+], [70-80%]=[C- to C+], and so on.  You don't want to be in the D to F range (the F range may start at 65%).  Depending on the actual scores, the percentage range may change slightly.  Don't worry about grades; focus on the actual material.  A letter on a piece of paper has no particular value, and won't get you very far in your career.

If I catch anyone cheating (or helping someone cheat), they will fail the course.  The Watson School Academic Honesty code is in effect, and I will not hesitate to apply it. There are lots of people who are trying to get into Watson, and we simply don't have the space; if you indicate that you're not interested in being a good computer scientist, please understand that we will swap you out for someone else.  There will not be make-up dates for labs. Get things done on time.

Lecture and exam schedule

Slides from the book

Professional Societies