COMP 388-4 Fall 2016 Syllabus

Compressed Introduction to Computer Science

Home page:

Contacting Your Course Instructor

Dr. Andrew N. Harrington
The phone number is fine for talking to me when I am there, but please leave personal messages for me on email, not voicemail.

Your lab class instructor and course TA is Griffin Moe, Loyola ID: gmoe


The text I have written with Dr. Thiruvathukal is online at It is also available for download in various other formats: pdf, eBook, downloadable web pages. See the discussion in the online resource section, Note the videos corresponding to most all of the individual text sections that you are responsible for.


This accelerated class is designed for people who already have a Bachelors degree. You should have had the equivalent of Math 117 (algebra/trig) or Comp 163 (discrete math) or Comp 150 (a bit of simple programming) with a B grade or better. No prior programming experience is required if you are comfortable with a math prerequisite option. We will do simple arithmetical calculations. The logical mindset of mathematics is very useful, and a comfort with symbols, not a head full of formulas.


The present page is basically administrative information. The goals and outcomes are summarized in the top 10 topics. If you already studied introductory Object-Oriented Programming, and think you may not need this course, be sure to examine the the top 10 topics, and consult with me.


Piazza is an online learning community - social media for a course. It has been used very successfully by tens of thousands of students.

You encouraged to pose questions and offer answers to others there.

Entries in Piazza come in several forms: general comments, questions, answers, discussion on an issue with a problem, edits to previous entries (this is a wiki), and polls. Entries can be directed privately to instructors (the TA and me) or to everyone.

It is a wiki which means it as a shared, editable space: If you think you can improve something posted by anyone, change/edit it.

Be careful with questions and comments that would help with a homework problem: If you post for everyone to see, the entry needs to be general or conceptual enough not to give away solution details. Do look early at the homework, think, and post such questions, to get early help! If you have a question that is directly related to a solution you are thinking of, it should be a private communication for instructors.

Here are most suggestions on using the individual types of Piazza contribution:

General Comments

Here are some ideas:

  • If they are not giving away a part of a homework/lab problem, they can be anything useful to the general community.
  • Requests for special emphasis in the next class make sense to go out to the whole class, too. After an initial request, "me, too!" additions are very helpful for me to plan how to make class time best support you!
  • If you found a good web site that addresses a course topic in a way that you like, post the URL with a comment.
  • Of course you can always give your own direct comments!
Other than the restrictions around specific assigned problems, use this community for help. We will discover more ways as we go along! Do organize your materials so you know where to look first for resources. Be aware of the recent course reading and topics. Go to the community second.
This is a wiki. One latest version appears directly, though the earlier wiki history can be viewed. Be helpful. It is particularly important in your learning to read critically. If you can improve an answer, edit it!
Discussion on a question
There is a provision for discussion of issues separate from answers. If the issue is resolved, the issue can be marked closed (but it is a wiki - it could be reopened by someone else).

Suggestions for optimizing the use of our class Piazza site are highly encouraged.


Communication is encouraged through Piazza, particularly for content that might resonate with others in the course. Make sure you log in and give it your preferred email address. I will generally send announcements through Piazza, so I strongly suggest you set up Piazza for frequent updates via email. I may occasionally send a very important note and override your email preferences, so you get notified immediately.

Be careful with public questions and comments that would help with a homework problem: The entry needs to be general or conceptual enough not to give away solution details. Do look early at the homework, think, and post such questions, to get early help! If you have a question that is directly related to a solution you are thinking of, it should be a private email communication for instructors.

I will use this group for general announcement/corrections for the class.

Feedback and Questions

Please let me know, in person or via email to me, when you need something from the course that I have not thought to include, or not included in sufficient detail for you, or not presented from a point of view that you can follow. We are in this together. For me to succeed, I need you to succeed. Students come in with enormaously different backgrounds. I routinely give each person individual attention.

For course content questions that you do not address in person, and might get help from someone else in class, feel free to post to Piazza.

Course Materials Locations

Beyond the text, there are three locations used by the course:

  • The basic public course materials will all be posted directly on the web under
  • Announcements, comments and question supporting your learning will appear in the Piazza.
  • Some private information between professor/TA and individual students will be handled through the University Sakai system. It will mostly be used for grades and homework submissions.



See the course schedule.

Tentative exam dates are shown in the course schedule and also below.

Thursdays Sept 22, Oct 13

The last class, Thursday Oct 20 will be used for presentation of your final project, not an exam. Comp 388-5 starts the following Monday.

Exam coverage

Exams will cover material discussed in class, reading material in the text and on the web, lab work, and assignments. Exams will always be cumulative, but they will NOT include new material from the class immediately before the exam. This way there will always be time for questions after digesting a class.


Do not write down things on exams that you can see are incomplete or incorrect without making some comment acknowledging this -- it is better to know you are wrong than to be wrong and think you are right.

Missed Exams

If you must miss an exam, let me know well in advance. Then if you have a good reason we can possibly make other arrangements. I have little sympathy for people who inform me after the fact for no good reason. I may completely excuse you from an exam if you were sick or unable to attend for long enough. Most often if you cannot take an exam at the usual time, I will want you to take it a little later, BUT I Do NOT GENERALLY LET ANYONE TAKE A LATE EXAM AFTER THE NEXT CLASS PERIOD. If you somehow fail to let me know in a timely fashion that you have an excuse and want to take the exam late, appear at my office before the NEXT class after the exam, and I may be able to give you the exam.

I reserve the right to request documentation about illnesses and "emergencies" that arise, especially in the case of repeated absences.

No Do-Overs

If you have an excuse for not being prepared to take an exam, but decide to take it anyway, you don't get to change your mind after you see a poor grade. Being sick is not a way to get two chances. In certain circumstances I may allow you to delay an exam due to illness, but I will not let you be reexamined due to a poor grade. If you are not prepared for an exam, tell me beforehand and we can discuss possibilities.

Class periods

I will tend to take questions (immediate, or earlier entered in Piazza), to address issues, present a context for the next reading/viewing assignment and emphasize learning to use the new concepts creatively. The main way for you to use the new ideas creatively is to do your labs and homework! Most class time will be spent letting you engage with the work while getting individual help as needed. Information and activities in class that are not in the book will be on exams and used in homework. I do not formally count class attendance, but I strongly recommend that you be there to start your path in computer science well. Always check in with your partner or other classmate if you miss class.

I am very happy to give extensive help outside class to people who attend class. If my first pass on an idea was not enough for you, we can do better together in pass 2, and maybe pass 3 if needed, .... I am much less enthusiastic explaining what has already happened in class to a person who is frequently absent.

Sometime outside life may intervene, so you are not prepared ahead far enough on the reading/viewing to continue on your written creations. You can generally use the time in what ever way is most helpful to you at the moment, and that may be to catch up on reading/viewing, with the advantage of help right there if you have questions. This is not in general the highest value use of class time, but may make sense in special instances. If you plan to view videos, be sure to have and use earphones, so not to interfere with classmates.

Pair Programming

A recent paradigm shift in professional programming has been Pair Programming: two people collaborating on one problem on one computer. This has proven to be more efficient than each doing separate parts independently and merging them, particularly when error fixing time is included. More recently this approach has also been used in classes with completely new student programmers. Not only have the individual projects been done better with more confidence, but also students have learned at least as well and had more enjoyment in the process. You are encouraged to do pair programming in this course for labs and homework assignments, and you are encouraged to work in pairs on your parts of the final group project within overall teams of around 4 students. (Your exams will NOT be in pairs however!) Read the page on how to make pair programming work. Things do not always go as planned: Also see administrative guidelines for pair programming.


The sections labeled as labs in the text are your first opportunity to apply new concepts and get checked off by me or your TA, who is a graduate student in Computer Science. We will watch you run your final correct code, either the day of the lab session, or in class within the next week so you do not get behind, and mark your grade, generally the 5 point for basic credit, plus occasionally some extra credit parts. The grade will be one component of your final grade in the course.

Programming Environment

We will be programming in C# -- a language developed by Microsoft as part of the .Net framework. As this is a computer science course, however, our goal is to make sure you can do your work on any reasonable desktop, which includes Windows, OS X, or Linux. You can download an installer with all the needed files for the development environment from You are strongly encouraged to bring your own notebook computer to class rather than depending on the lab machines that have to be set up each class.

They keep packaging it in new ways. You may separately need the implementation of C# from the Mono Project to run the helpful interactive testing environment csharp. I would be happy to get together early with a student loading these files for the first time on a Mac and also on a Windows machine.

Campus Network, Rights and Responsibilities: As a user of the campus network, you should be aware of your rights and responsibilities in at ITS Acceptable Use Policies

Programming and homework assignments

Your go-to page for administration during the course is the course schedule showing labs, reading assignments, and class activities. Be sure to keep checking it.

The assignments will be based on material discussed in class, assigned reading material and lab work. Generally homework will be a longer term, more elaborate application of recent concepts than with the labs. Hence do labs about material used in homework before the homework! Homework can be developed in steps, and you are encouraged to work on it in class as soon as the new concepts have been covered (and generally practiced in a lab). That way you will usually be done with assignments well ahead of their due dates, which can really reduce stress as we zoom on toward the end of the course.

In this small class you can generally show your completed homework to me or the TA during class, and if we find problems, you can fix them on the spot, or take morte time if you need, and then show it off again. We will also give feedback on style. For a permanent record, once correct, also turn it in to Sakai. Follow this approach so you have full understanding and never make a final submission that does not work correctly!

To keep up with this fast-moving class, please start early enough to have time for all this before the due date. You will have major problems later in the course if you get much behind. You may work with your pair partner on the details of the assignment. Working on programming problems is essential to your understanding of the course material and will not only be a direct part of your final grade, but will also strongly affect your exam performance.

Final Group Project

You will also be assigned to groups of 3-6 for a large open-ended project (for instance writing a game and its instructions and other documentation), that should be assigned after the second exam and should mostly consume the last third of the course, in class and lab and out of class. This will provide quite a different experience from the more highly specified individual assignments earlier in the course. Your group will be expected to turn in an intermediate version part way through the project, and you can use the feedback you get to make sure you are on a successful track for a final submission. Each team will present their project in part of the final exam period, and then we can all test other teams' projects! This is in lieu of a final exam on the last day.

At the end of the project, I will ask each team member individually to turn in a form identifying the principal individual contributions of each member of their group.

Extra help

Learning is a spiral process, and different people need to take different sized steps at different times. Self dependence and stretching yourself are great, but this only goes so far. Take advantage of the resources provided when you need them.

  1. Please take advantage of the Pair Programming. You and your partner may complement each other very well.
  2. I welcome questions inside class, in regular office hours, or by arrangement at other times.
  3. Use Piazza.
  4. When I am not available, and you want face-to-face help, please visit the Computer Science Department tutors. They have scheduled times all through much of the week. Also, you might try visiting several tutors: Some may fit you better than others. See the tutoring schedule. Hopefully this is set up by the second week of classes. We also hope to get tutors into Piazza.
  5. Here is one site with free interactive testing of your ability to read bits of C# and predict the path of execution (playing computer). This understanding is important before writing your own code. Advantages: free, gives step by step answers, adaptive to your level. Disadvantages: maybe slow, picky about order, may be blocked due to security settings that are hard to fix, and does not work in Chrome:

Grading Breakdown/Weights

Grading Categories and Weights
Category Weight
Exams 1 20%
Final Exam 30%
Labs 10%
Homework 20%
Final Project 20%

Exams may be scaled/curved. I will use the scaled scores in my spreadsheet when calculating final grades, but I will only post raw scores in Sakai. I convert the numerical grade from the final weighted average to course letter grades with the following minimum requirements:

A 93, A- 90, B+ 87, B 83, B- 80, C+ 77, C 73, C- 70, D+ 67, D 60.

If you have consistently displayed more knowledge, ability, and interest in class discussions and in Piazza than you show in your exams, I may raise this grade.

Academic Dishonesty

The penalty for cheating may be anywhere from a 0 on an assignment to a grade of "F" in this course. The appropriate dean will be informed in writing of all cheating incidents.

Cheating consists of, but is not limited to:

If you are working on a pair or group project, an "outside person" only refers to people other than your assigned partner or team. Note that cheating goes both ways: both giving and receiving.

Consultation is allowed with me, the TA, or official Computer Scienced department tutors. If you consult with any of these people, still make a comment at the top of your work about the substance and depth of the help. Hiding such help is also academic dishonesty.

Help from any source is fine concerning

Cell Phones

I assume that my class is not the most important thing in your life. Only you know the relative importance of any particular connection through your cell phone, and whether it is important for you to answer a call immediately rather than later. I do want you to be respectful of my class and disrupt it as little as is practical. If you get cell phone calls with fair frequency, be sure to have the ring muted (use vibrate mode) before coming to class. If you rarely get calls, you might not mute it ahead, and your cell phone may happen to ring. Get rid of the noise as soon as possible, and do not get flustered. I assume you will move outside the classroom for a conversation. If you get fairly frequent calls that you are likely to consider important answering, sit in a place where your exit and re-entrance are as unobtrusive as possible.


Please contact me if you have questions about these ground rules or about anything else in the course. After class, by email, in my office, by phone, all work for me. I am here to help. On account of my GPD work, I generally have Skype running, ID: gpd.cs.luc This also allows screen sharing.

With the great speed of the course, it is very important that you keep up. Let me know when you need help!