COMSC 101 Problem Solving and Object Oriented Programming

This is the first course in the required Computer Science major/minor sequence. By the end of this course, you will approach problems analytically and have basic proficiency with object-oriented programming (OOP) languages. We will start the course off programming Unity apps using JavaScript, then continue with Java.

Why Unity and JavaScript as opposed to just Java? Computer science is a fun field, and we believe that programming should be exciting and engaging! We want you to be creating GUIs (Graphical User Interfaces), animations and interactive projects that you can show your friends from your web site. Learning graphics in Java can be a little cumbersome to start off with, so we have chosen the Unity platform, which allows you to easily create apps for the web and mobile devices, and JavaScript to get you started right away with fun and exciting graphics!


  • Analytical approach to problem solving
  • Abstraction and program design
  • Basic programming skills (in both languages: JS and Java)
    • Variables
    • Functions
    • Scope
    • Conditionals
    • Loops
  • Object-oriented programming (OOP)
    • Usage of pre-defined classes
    • Instance properties and methods
    • Design of simple classes
    • Inheritance (time-permitting)
  • Basic data structures
    • One-dimensional arrays
    • Two-dimensional arrays

Course Requirements

  • Weekly assignments (mixture of programming and worksheets)
  • Weekly labs
  • One in-class exam
  • Final programming project
  • Final exam


  • Assignments: 40%
  • Labs: 15%
  • codecademy: 5%
  • Final project: 10%
  • Exams: 20%
  • MaGE participation: 5%
  • Class participation: 5%

For the final grade, you have the option to choose one out of the 9 or so homeworks - presumably the one with the lowest grade - which will be dropped from the final average computation. However, you can only choose to drop a homework for which you did the work. If you miss a homework, you get 0 points on it (and that will count towards the final average).

General Grading Guidelines

  1. Programming assignments will generally be given out on Tuesday, due Monday (section 1) or Tuesday (section 2) the following week at 11:59pm.
  2. Most of your assignments and labs will be web-published -- their submission will simply require you to place your final files online by the deadline.
  3. You must have comments in your code! Poor commenting will result in an automatic deduction of 10%.
  4. Your program must compile! Non-compiling code will result in an automatic deduction of 15%.
  5. It is better to submit a program that works but does not satisfy all required behavior than a program that attempted to do everything, but does not run!
  6. Throughout the semester, we will occasionally add BONUS parts to your homework assignments. Doing them will help you accumulate experience and BONUS points, which we will use for your final grade as follows:
  • In case you are on the borderline between two grades
  • To make up for exceptional situations when your performance was low (illness or other documented cases like this).
  • To differentiate EXCEPTIONAL (A level) performance from VERY GOOD one (A- level).
  • Bonuses can be submitted up to one week after the associated assignment is due; please send an email to the instructors if you submit a bonus after the assignment deadline.

To summarize: A and A- level work means quality programs which run, do what they are supposed to do, are well designed and documented and submitted on time.

Honor code

REMINDER: WE ARE UNDER THE HONOR CODE! While I encourage you to:

  • Talk to your class mates about the lab and homework
  • Organize study groups
  • Consult other books or the internet for inspiration and clarifications
  • Ask the lab instructor or TA to help you find bugs in your code

I also have to remind you that:

  • All the work that you submit must be yours: it is against the honor code to have somebody else do the assignment for you (including TAs or tutors) or to copy an assignment or portion of an assignment from somewhere else (including books or the internet).
  • You MUST acknowledge classmates or TAs that you worked with for each assignment -- this should be done in a comment at the top of your main source code file.
  • I understand that a great way to learn about new technology is by adapting code snippets found online; however, this enters very sensitive territory. For most of the assignments, you should not be adapting code you've found online. However, there will be some cases where this is appropriate (e.g., when using Unity or Java libraries we have not explicitly seen). Any code that you have adapted MUST be properly referenced (e.g., give the URL of the site you obtained the original from)! I expect to see comments where you have modified the original code. If you are at all unsure about what is acceptable, you must contact me immediately!

Lateness Policy

You have 4 "free" late days to use throughout the semester. These may not be applied to the final project!

When you are ready to use the day, send an email to myself and the lab instructor before the posted deadline that includes:

  1. the number of late days being used for the submission
  2. the number of late days you have remaining

If you do not email us prior to the posted deadline, but want late days applied to your assignment, 10 points will be deducted from your submission's grade.

You may earn late days for your late day "bank" by:

  • Turning in an assignment 2 days (48 hours) early. 2 days early = 1 late day earned. No partial late days earned for submitting 24 hours early.
  • Attending an active learning module -- these will be scheduled and announced by GEMs throughout the course. You may not attend the same module more than once.

If you do not use all your late days, each unused day (max of 4) will transform into an extra 1/8 point (i.e., up to .5) on your final average!

Access, equipment and software

  • You will be given
    • An account on the Computer Science network, which is different from the MHC network
    • Access to the Kendade 307 lab, which is equipped with Macs on the Computer Science network
  • If you wish to work on a computer not in the lab (e.g., your personal computer or a LITS machine), you are responsible for transferring your files to the CS network for submission or when asking for debugging assistance.
  • Unity is commercial software
    • It is available on all CS lab machines
    • You may also download the Personal Edition for free for your computer: Get Unity


There is no required text for the class.

You may find the following reference texts useful:

  • O'Reilly series for JavaScript
  • O'Reilly series for Java

You may also find the following online resources useful:


Class attendance is extremely important and you are expected to attend. Assigned readings are to be completed before lecture so that you have a basis for participation in class discussions and for asking questions. You are responsible for material presented in class; be sure to ask questions if there are concepts you did not understand (e.g., via email, in office hours or TA drop-in hours). If you miss a class, please ask a classmate for notes and see me or the lab instructor with any subsequent questions on covered material.

MaGE (Megas and Gigas Educate) Academic Peer Mentorship Program

The CS Department is developing a new academic peer mentorship program, funded by Google, called MaGE (Megas and Gigas Educate). We are very excited that we will be able to pilot some components of the MaGE program with the CS 101 course during Fall ‘15. Through MaGE, an academic peer mentor will be assigned to a set of CS 101 students; these mentors have undergone training in effective and inclusive mentoring for a diverse student population.

MaGE at a glance

Heather Pon-Barry, CS, is the PI (Principal Investigator) of the program Audrey St. John, CS, and Becky Wai-Ling Packard, Psychology & Education, are co-PIs Barbara Rotundo is the Program Coordinator GEMs (Giga Education Mentors) are trained academic peer academic mentors PEBLs (Peer Education Based Learners) are students enrolled in an intro course, assigned to a GEM

MaGE features that will be piloted Fall '15

Every CS 101 student will become a PEBL in the MaGE Program!
As such, each PEBL will benefit from the following features being piloted for the program by:

  • being assigned a GEM (there will be a 1:9 GEM to PEBL ratio)
  • receiving written feedback on submitted work from their GEM
  • meeting 1-on-1 weekly with their GEM to discuss submitted work
  • having a GEM present during one hour of their weekly lab session
  • having the opportunity to participate in an active learning module several times throughout the semester

Staffing Overview

CS 101 is an exciting course, as it is the first in the major sequence. It is programming-intensive, so we a wonderful team to support students. Here is an overview of the staffing for the course.


Your instructors have office hours to answer questions about material, assignments and labs, posted on the Main Page. You can also email them.

GEMs (upper level CS students)

GEMs (Giga Education Mentors) are upper level students that have been trained in effective and inclusive mentoring.

As a CS 101 student, you will be assigned a GEM, who will

  • review your submitted work
  • meet with you for 10 minutes individually to give feedback on your submitted work (required)

You may also interact with GEMs in two other ways:

  • In each lab, there will be one GEM for about an hour to help with questions during that lab time.
  • Throughout the semester, GEMs will schedule special 1-hour active learning modules to help clarify material. If you attend one of these modules, you will earn 1 late day.

TAs (upper level CS students)

TAs are upper level students that hold 2-hour drop-in help sessions for assistance with on-going work. The schedule of these sessions is posted on the Main Page.


What resources are available if I want help on the current lab or assignment?

  • During a scheduled lab session, you should ask the faculty instructor, lab instructor or GEM (if one is present).
  • Otherwise, you can attend the following (times are posted on the Main Page) or send email to your instructors:
    • Instructor office hours
    • Lab instructor office hours
    • TA drop-in sessions

What resources are available for feedback on submitted work?

  • A GEM will be assigned to you, who will perform an initial "code review" and will discuss this during weekly 1-on-1 meetings for your submitted work.
  • You can also ask your instructors in their office hours or over email.

What is the difference between a GEM and a TA?

  • A GEM is a mentor assigned to you for the duration of the course, who will mainly give you feedback on submitted work.
  • A TA is associated with the course and can help any students during their drop-in sessions with ongoing work.

Who do I ask if I have other questions about the MaGE program?

  • Contact the Program Coordinator (Barbara Rotundo).
Skin by RIL Partner