Comp 150 - Computer Programming 1
Spring 2008
Instructor: Brian
Shelburne
Office: 329-E
Science
Contact: x7862;
bshelburne@wittenberg.edu
Class times: Lecture - MWF 11:30 -
12:30; Lab - Th 12:30 - 2:40 - Room 144 BDK Science
Comp 150 Textbook
- Python Programming: An Introduction to Computer
Science; John Zelle
Course Objectives
Although
the title of this course is "Computer Programming 1", this course is
not exclusively a programming course. While Python programming makes up
a large part of the material that will be covered (with some C++ programming
thrown in towards the end), the course also provides an introduction to many
topics and areas of interest in computer science. This is broken down into the
following areas
- The History of Computers
- Representing Numbers on the Computer: Binary Numbers;
Fixed Point, Floating Point and Character (ASCII) Representation
- Boolean Logic, Gates and Digital Circuits
- Computer Organization
- Programming Languages: Machine Code, Assemblers, High Level
Programming Languages; Compilers vs
Interpreters; Programming Language Paradigms
- Operating Systems, File Systems and Directories
- Models of Computation: Finite State Machines and Turing
Machines
- Computational Complexity:
- Networks and the World Wide Web
- Societal and Ethical Issues
- Software Engineering
For more on these areas, click here.
Grading
This
course will be graded on 1000 points as follows:
Three in-class tests each 100 points 300 pts
Graded Programming
Assignments
400 pts
Lab
Grade
100 pts
Comprehensive Final
Exam
200 pts
--------
1000 pts
Links to Syllabus,
Programming Tips and other Miscellaneous Stuff
- An
Introduction Computer Science 150 - Also a brief overview of computer
hardware, software, and a look "under the hood". (01/09/2006)
- The Python Programming Language Official Website at http://www.python.org/ . This is how you
can download your own copy of Python.
- John Zelle’s “Teaching with Python Page”
– including access to his graphics.py module using in his text.
- How
to Write a Program : Notes on techniques to write and test programs (01/11/2008).
- Algorithms
and Pseudo-code : including material on writing pseudo-code
(01/11/2008)
- Terms
and Programming Style for COMP 150 : a list important terms and
concepts for the Python and C++ languages plus Style Requirements and
Guideline for programs (01/06/2008)
- Procedural
Abstraction and Other Terms : a list of terms
and ideas including concepts relating to functions and parameters
(02/13/2006) - to be revised!
- How
a Selection Sort Works: a link to a .pdf
file with C++ code and an example! – to
be revised!
- Defining ADT Operations
– to be revised!
- Calculating
the Day of the Week from the Date : The reasoning behind the algorithm
used in the programming assignment.
- Web Links
from The Universal Machine. This is the web site supported by
Blank and Barnes, authors of The Universal Machine a text similar
to Schneider & Gersting's An Invitation
to Computer Science
- Creating a CodeWarrior
Project file - a .pdf document that
describes how to create a project file for C++ programs. Since project
files can be reused, you only need to do this once. (01/11/2006)
Links
to In-Class Demo Programs
1. Notes for Wednesday 01/23/08: Quadratic
Equation, Factorials, List Demo, Type
Conversion Demo
2.
Notes for Friday 01/25/08: From Lab03:
Approximating pi, Computing n choose k, The 153 Problem
3.
Notes From Wednesday 01/30/2008: Decimal to
Hex Digit Conversion; Caesar Cipher Program
4.
Notes from Thursday Lab 01/31/08: Decimal to
Base B Conversions, Day of Year Calculation, String Formatting, Vigenere Cypher
5.
Notes from Thursday Lab 02/07/08: Reading
and Writing text files
6.
Notes from Wednesday 02/20/08 & Thursday’s
Lab07 (02.21.08): Graphing a Function, Lab07 Examples using Functions,
Mouse Polyline
7.
Notes from Wednesday 02/27/2007: Boolean
valued function isLeapYear(), Computing Gross Pay using function calls.
8.
Notes from
Thursday Lab 02/28/2008: Letter grade program, finding day number,
detecting illegal dates
9.
Examples of Exception Handling:
Programs showing use of try: except: blocks and filter loops
10. Notes from Thursday Lab 03/13/2008: “Common Patterns” for Loops
11. Notes from Thursday Lab 03/26/2008: Craps
and Cannon Balls!
12. Note from Wednesday 04/02/2008: Classes for
Dice, Buttons and Rational Numbers:
13. Notes from Thursday Lab 04/03/2008: GUI’s
and Event Driven Programming
14. Notes from Wednesday 04/09/08: Coding for List Methods
15. Note from Thursday 04/10/08 Lab: Coin
Tossing and String Searching
16. Notes from Thursday 04/17/08 Lab: Date
Objects and Card Images
17. Notes from Wednesday 04/23/08: The Grid50
class – a framework for cellular automata programming; Brownian Motion demo
18. Notes from Monday 04/28/08: The Mandelbrot
Set!
Links to Supporting Material
1. An Introduction to Encryption Methods:
Caesar & Vigenere Ciphers
2. Graphics
Module Reference – John M. Zelle – Version 32. Spring
2005: Documentation for Zelle’s graphics.py
library
3. Computing the Date for
Easter: A link to an Australian web-site which has lots of information on
the subject. It’s actually quite complicated!
4. How Python Implements Booleans:
Like many computer languages Python implements False as 0 and True as any on-zero value.
Links to Notes on Areas of Interest in Computer Science
- A
Brief History of Computers
(01/08/2004). From
The US Constitution to IBM The 1890 Census, Hermann Hollerith, and the
origins of IBM. Discover why the origins of IBM be indirectly traced to
the U.S. Constitution. An example of how the need for data processing
drove the development of computers. The Analytic Engine - an
excellent site on Charles Babbage's Analytic Engine. Contains good
information on how the Analytic Engine would have worked including how it
probably would have been programmed. Also contain links to an Analytic
Engine emulator which lets you program and run your own Analytic Engine
programs! Web Sites
Useful to Computing History, a collection of web sites from IEEE
Annals of the History of Computing. Also includes links to web sites of
historical computers.
- Binary
Numbers : Binary numbers, decimal to binary and binary to decimal
conversion, signed binary numbers (sign-magnitude & twos complement
representation), floating point representation, ASCII character codes. A
more complete explanation is presented in the .pdf
document The
Representation of Number on the Computer - Brief Version (01/27/06)
- Boolean
Logic, Gates and Building Circuits : Starting from Boolean logic we
introduce Gates and show how to combine them to build simple Circuits
(02/06/2008). MM-Logic is a
graphics tool to design, build, test, and run simple circuits.
- Notes
on Computer Organization von
Neumann Architecture: memory, input/output, arithmetic/logic unit and the
control unit. (02/10/2004). The Wittiac-II: is a simple computer simulator based
on Bell Labs' 1968 CARDIAC(c). You can write, assemble and execute
programs on it. A .zip file contains documentation plus an executable
version of the assembler and simulator.
- Notes
on Programming Languages- Levels, Types, and Language Translation
- Notes
on Operating Systems. What is an operating system? What does it do?
How did it develop? An Overview of
MS-DOS is a brief introduction
to using MS-DOS including a link to a hands-on exercise in MS-DOS that
allows you try out a number of MS-DOS commands.
- Note
on Models of Computation - Turing Machines plus additional notes on
Finite State Machines and State-Transition Diagrams. A Turing
Machine Emulator Contains information about a DOS based Turing Machine
Emulator program that can be found on Wittenberg's Network (q:\computer
science\icons\turing). A .zip file containing
the Emulator program plus documentation can be downloaded to your
computer. Also available is a .pdf file with documentation.
- Computational Complexity (coming soon):
- Networks
- (under revision)
- Societal Issues (coming soon):
- Software
Engineering:
How do you get that big software project up and running on time and within
budget?
The programmer, like the poet, works only slightly removed from pure
thought-stuff. He builds castles in the air, from air, creating by exertion of
the imagination. Few media of creation are so flexible, so easy to polish and
rework, so readily capable of realizing grand conceptual structures. Yet the
program construct, unlike the poet's words, is real in the sense that it moves
and works, producing visible outputs separate from the construct itself. It
prints results, draws pictures, produces sounds, moves arms. The magic of myth
and legend has come true in our time. One types the correct incantation on a
keyboard, and a display screen comes to life, showing things that never were
nor could be. ... The computer resembles the magic of legend in this respect,
too. If one character, one pause, of the incantation is not strictly in proper
form, the magic doesn't work. Human beings are not accustomed to being perfect,
and few areas of human activity demand it. Adjusting to the requirement for
perfection is, I think, the most difficult part of learning to program.
- F. Brooks ("The Mythical Man
Month", pages 7-8)
Return to Alternate Home
Page