COMP 170 Spring 2015 Syllabus

Introduction to Computer Science

Home page:

Contacting Your Course Instructor

Dr. Andrew N. Harrington

The phone numbers are fine for talking to me when I am there, but leave messages for me on Piazza preferably, or email, not voicemail.


The required text is free online:


Math 117 or Comp 163 or Comp 150 with a C- grade or better, or you may be taking Comp 150 now. No prior programming experience is required. 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. I will give extra credit to those who contribute regularly.

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! This will be a big plus in my grading if you show how you have read critically entries others have written. (Including mine.)
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).
If I want quick aggregated responses to multiple choice questions, I may post an anonymous poll. Timely responses are appreciated.

Piazza is the Loyola site. Suggestions for optimizing its use in our learning community 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.

Feedback and Questions

Please let me know, in person or via a message to me in Piazza, 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.

For course content questions that you do not address in person, please post them on Piazza, not email.

You should be looking to help others, too: besides being good for the community, it is good for your grade. You are NOT graded down for expressing needs for help: to be clear about where the holes are in our preparation and to be proactive are positive. Lots of people have lots of questions about this course. Lots of topics need to be spiraled through, with more questions and a bit more understanding in each pass. Do not be shy with questions!

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 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.



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

February 12, March 12, April 9

Your last exam is the one on April 9. The semester will end with a major group project, so the final exam periods:

Friday, May 2, 1-3PM

will be used for presentation of your final project, not an exam.

Extra time on exams

For exams, people work at enormously different speeds. I hate to grade people on pure speed. I want an exam short enough for everyone to do. Rather than make it so short that each individual problem counts a great deal, I have had success with making a reasonable length exam for most people to do in a single class, by allowing people to use more of the partially used regular time slot when the class starts, so you can start at noon rather than 12:20PM. If you cannot schedule that in advance for the three exam days, let me know. I can likely let you extend on the other end of class if need be, or make some totally different arrangement.

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 WILL NOT 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.

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 and classmates 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. Your participation in class may help your grade. 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.

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 a TA, who is a graduate student in Computer Science. A TA will watch you run your final correct code, either the day of the lab session, or in class within the next week, and mark your grade, generally the 5 point fo basic credit, plus occasional some extra credit parts. The grade will be one component of your final grade in the course.

The TA is Chris Robertson, Loyola ID crobertson1.

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. As such, we will be using an implementation of C# from the Mono Project that supports the current C# language and is entirely compatible with the concepts/materials we are covering in this class.

You are encouraged to download and install the Mono SDK (Software Development Kit) for your computer/operating system right away (version 2.10 or later, please). In addition, you need to download the integrated development environment (IDE) Xamarin Studio. Dr. Yacobellis has packaged all the files for, Windows and Mac, at

Download and unzip the version for your machine (big download!); read the instructions included and install.

If you use a lab machine, the first time see Xamarin in the lab.

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

The course schedule will show labs, reading assignments, and class activities. Be sure to keep checking it as more gets added or shifted in time.

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. It can be developed in steps, and you are encouraged to work on it in class as soon as the new concepts have been covered. That way you will generally be done with assignments well ahead of their due dates.

Homework is turned in using Sakai. Assignments are due at the end of the date specified unless otherwise stated (well, the latest Sakai goes is 11:55PM). Assignments should be turned in on time, running correctly. The running correctly is very important! You are going to lose a lot more on your grade for having it not work than for spending another couple of days and getting the help you need. Please start early enough to have time for all this before the due date. See the next section for late assignment policies. You may only work with your pair partner on the assignment, and NOT work with other students - see the section below on Academic Dishonesty. 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.

You are not required to come to classes in general, but if you are not there fairly regularly, actively doing your assigned work, then after you turn in an assignment, I may reuqire you to make an appointment to come to my office and go over your homework with me in some detail.

Late assignments

In this class the following lateness penalties apply to the individual programming assignments: Assignments turned in up to one week late can receive a 10% penalty. I may cut off acceptance after a week. If there is some special reason for an assignment being turned in late, preferably speak to me directly first. I will consider reducing the penalties. If I accept your reason, ALSO make a comment at the top of your source code in the main program. (This reminder helps!)

Do not submit something just to be on time that does not compile and run correctly. The penalties for a non-working program are much greater than for being a bit late.

Final Group Project

You will also be assigned to groups of 3-5 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 game in part of the final exam period, and then we can all play other teams' games! This is in lieu of a final exam.

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. There is also a Piazza site that will be publicized for remote interactions with tutors.

Grading Breakdown/Weights

Grading Categories and Weights
Category Weight
Exams 1, 2 15% each
Exam 3 20%
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 tutors for Comp 170. 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, Piazza, by email, in my office, by phone, all work for me. I am here to help.