|CSC1500-04||12:30PM-1:45PM||Wed, Fri: Sep 4-Dec 10||Edgerley 106|
|Office:||Edgerly 312A and occasionally Edgerly 101|
|Office hours:||W: 2:00-3:30, R: 12:30-1: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 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, 2011Several versions of this book are available, as described at http://www.greenteapress.com/thinkpython/thinkpython.html, some of which are available on paper.
Allan Downey, Think Java, GreenTea Press, 2011This book, described at http://greenteapress.com/thinkapjava/, 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 ProgrammersThis 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.
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:
- 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.