CSC 1500
Computer Science I
A required course in the CS or CIS major in the FSC BS program
Fall 2015 -- 3 credit hours

CSC1500-0412:30PM-1:45PMWed, Fri: Sep 4-Dec 10 Edgerley 106

Contact Information

Instructor:Stephen Taylor
Office: Edgerly 312A and occasionally Edgerly 101
Office hours: W: 2:00-3:30, R: 12:30-1:30 (and by appointment)
Web page:
Office phone: 978-665-3704
Home phone: 508-867-9288

Course Description: (From the catalog) This course introduces Computer Science by using a high-level programming language. Students will be taught to design programs and implement them using object-oriented programming techniques. This course provides a solid background for further studies in Computer Science by preparing students to enroll in the more specialized high- level software courses

To be slightly more concrete, this a beginning course in programming computers. We will primarily use the Python programming language, but the concepts and many of the tools are equally relevant for other languages, and some of the assignments will use the Java language.

Course goals

Course Goals: The overall objective of this course is to introduce students to computer programming methodology. Students must become comfortable designing and coding programs that use various data types, basic arithmetic, method calls, control structures, graphical interfaces and arrays. The programs must also include using different input/output modes, basic error handling and event handling. Students must also learn the basic object oriented programming concepts such as encapsulation, inheritance and polymorphism.

Although we'll introduce only a fraction of the full power of the Python language, by the time you finish the course, you should be able to read and write small programs in the Python language, and you should be able to read small programs written in any of the closely related languages.

We'll spend enough time on Java for you to understand how the concepts we've learned in Python can also apply to other languages.

Course Objectives

Upon successful completion of this course, a student will have demonstrated knowledge of:

Attendance policy

There are two class meetings each week. I expect you to attend them all. Please talk to me if this creates a schedule conflict for you.

This is partly a lab course. You can't do the labs if you aren't in the lab. I don't take attendence, but my grading reflects my expectation of seeing you regularly:

Quizzes and exams are ordinarily due in the period in which they are given, and may not be turned in later, although they may be excused if you have a convincing story, such as your grandmother getting married in Provincetown.

Labs are due on the day on which they are assigned, but not necessarily in class. Anything turned in by midnight is on time, and unless I am actually in my office at midnight, anything I find in the Blackboard dropbox on the following morning is assumed to have been turned in on time.

Papers and programming assignments are similarly due by midnight. Late papers and programs may be accepted after their due date, but I am likely to mark them down for lateness.

Course resources

The three textbooks for this course are all available online. Miller is not available any other way, but used editions of the two Downey books are also available on paper.

The texts are:

Allan Downey, Think Python, GreenTea Press, 2011

Several versions of this book are available, as described at, some of which are available on paper.

Allan Downey, Think Java, GreenTea Press, 2011

This book, described at, is an earlier version of Think Python, but for java instead of python. They have the same outline, and they cover the topics in the same order. The downside of this is there is quite a bit of overlap between the two, and there's a temptation to skim which can cause you to miss the differences. The point of the similarities is that this is a course in learning to program, rather than in either of the two languages, Python or Java.

Bradley Miller, Java for Python Programmers

This is more of a webpage than a textbook, but it's a relevant read as you switch back and forth between python and java. It does assume that you know more Python than we will at first.

Python Software

The Python language currently exists in two versions, called Python 2.X and Python 3.X. (There are sub-versions 2.3 ... 2.7 ... 3.1, etc. but the subversions with the same first digit are compatible with each other.) The Fitchburg State labs currently have both Python 2.7 and 3.2 available, but Python 3.2 is a later version, and is available by default. The current latest release is Python 3.4.3. This matters, because 2.X and 3.X are slightly different languages. But even at your early level of programming skill, you should be able to cope with the differences.

I am going to mostly use Python 3.X in lecture, and I suggest you download that to your laptap.

Some online tutorials use Python 2.X for examples but you should be able to convert almost any python 2.X program to a python 3.X program by making a few simple changes:

You can download either version of Python from


From time to time I will put programs from lectures on the web.

I usually record grades in blackboard.

Reading and Lab Project Schedule:

Final Exam

There is a final exam, and two or three mid-term exams, all of which are in very similar formats, although of course they cover different material.



Tentative grade rubric:

  1. There will be several pop quizes, making up in total 10% of the final grade.
  2. There will be several programming projects, making up 50% of the final grade.
  3. There will be a final exam and two midterms, which will make up 30% of the final grade
  4. The remaining 10% of the grade will be based on class participation and other utterly subjective measures.

Late work

Deadlines are made to be bent, but exceptions create extra work for me. Assignments are due at the beginning of class. Work received after 12:35 PM is late. I may give credit or partial credit for late work, but you should talk to me as soon as you know it will be late. I will always give at least partial credit for partial work, so turning in something incomplete but on time is a sensible strategy.

I do not consider homework which is emailed to me to be turned in on time, no matter when you sent it. Instead use the Blackboard dropbox.

There are no makeup or early exams, but I may excuse an exam for a good story, presented in advance, like your grandmother getting married that day in Provincetown.

Each student is responsible for completing all course requirements and for keeping up with all activities of the course (whether a student is present or not).

Academic Honesty

I expect you to be so interested in your projects and homeworks that you discuss them with everyone, including your mom, your little brother, and other members of the class (who will at least know what they're being sympathetic about.) So I won't be too surprised if several people come up with the same idea, or even the same programming trick. But I want you to do each homework yourself, and I don't want you to share typing, even if you both worked on the problem together, and you can't really tell anymore who came up with what. (Except of course for group projects, for which the group will be designated in advance.) To keep from confusing me, you should mention everyone you talked to and every web site you looked at in your development diary. You can only skip mentioning your little brother, if you think he wasn't any help at all...

I consider it plagiarism to share typing or fail to give credit to other peoples' ideas.

Fitchburg State College has an Academic Dishonesty policy, which can be found in the college catalog. Penalties for academic dishonesty, including submitting work which is not your own, and assisting other students on examinations, can be severe.


If you require course adaptations or accommodation because of a disability or acute medical condition or if you require assistance in the event of an emergency evacuation of the classroom, please see the instructor as soon as possible. Students with disabilities are encouraged to register with the Office of Disability Services on the 3rd floor of the Hammond Building.