|CSC1500-01||9:30PM-10:45PM||Tues, Thurs: Jan 14-May 8||Edgerley 202|
|CSC1500-02||9:30PM-10:45PM||Wed, Fri: Jan 15-May 7||Edgerley 202|
|Office:||Edgerly 312A and occasionally Edgerly 101|
|Office hours:||W: 12:30-3:30 (and by appointment)|
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.
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.
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.
The textbook for this course is
John Zelle, Python Programming: An Introduction to Computer Science Franklin, Beedle, & Associates
Compared to most CS textbooks, the book is not too expensive new from the bookstore. If you are willing to wait a few days to order it online, you can obtain more cheaply used. I usually buy used books from Abebooks.com. I also found a text version for download online with Google, but I think it will be worth owning a paper copy.
There are two editions available. There isn't a whole lot of difference between the two editions, and you should be able to use either for the course.
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.1 available, but Python 3.1 is a later version, and is available by default. The current latest release is Python 3.3. This matters, because the two versions are slightly different. 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.
The first edition of Zelle uses Python 2.X for all its examples.
The second edition of Zelle uses Python 3.X for all its examples, but the author didn't redesign the examples, and you should be able to convert any python 2.X program to a python 3.X program by making a few simple changes:
- Add parentheses to print statements
Python 2.X Python 3.X print x,y print (x,y)
- Use int(input()), float(input()), or eval(input()) instead of input()
The eval(input()) form lets you enter complicated expressions like
Python 2.X Python 3.X x = input("gimme an integer") x = int(input("gimme an integer")) x = input("gimme a float") x = float(input("gimme a float")) x = input("gimme an expression") x = eval(input("gimme an expression"))which is nice, but it also lets the person running the program type in things like (-9+math.sqrt(9**2-4*1*2))/2which doesn't matter if you are the person doing it, but can be a problem in a program which is being used by a wide range of people who may be unskilled or malicious... quit()
- use input() instead of raw_input()
To avoid the security problem of malicious users typing in funny stuff, the Python3.X developers gave input() the functionality of raw_input() in Python2.X. Then they discarded raw_input(), in an effort to keep the language lean.
- use // instead of / for dividing integers if you really want to discard the fractional part.The only advantage of the 2.X behavior is that it is common in other languages, so you'll have to learn to watch out for it eventually.
Python 2.X Python 3.X print 4/3 print (4//3)
You can download either version of Python from http://www.python.org
From time to time I will put programs from lectures on the web.
I usually record grades in blackboard.
Tentative grade rubric:
- There will be several pop quizes, making up in total 10% of the final grade.
- There will be several programming projects, making up 50% of the final grade.
- There will be a final exam and two midterms, which will make up 30% of the final grade
- The remaining 10% of the grade will be based on class participation and other utterly subjective measures.
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).
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.