Comp 150 - Computer Programming 1

Fall 2008

 


Instructor:       Brian Shelburne

Office:             329-E Science

Contact:          x7862; bshelburne@wittenberg.edu
Class times:     Lecture - MWF 12:40 - 1:40; Lab - Tu 9:00 - 11:10 - 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 I", this course is not exclusively a programming course.  While Python programming makes up the bulk of the material covered, the course also provides an introduction to many topics and areas of interest in computer science. These topics are broken down into seven areas

  1. The History of Computers
  2. Representing Numbers on the Computer: Binary Numbers; Fixed Point, Floating Point and Character (ASCII) Representation
  3. Boolean Logic, Gates and Digital Circuits
  4. Computer Organization
  5. Programming Languages: Machine Code, Assemblers, High Level Programming Languages; Compilers vs Interpreters; Programming Language Paradigms
  6. Operating Systems, File Systems and Directories
  7. Computational Complexity:

 

    For more on these areas (and others), 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            450 pts
   Lab Grade                                  50 pts
   Comprehensive Final Exam                  200 pts
                                            --------
                                            1000 pts


Links to Syllabus, Programming Tips and other Miscellaneous Stuff

  1. Course Syllabus – Fall 2008
  2. An Introduction Computer Science 150 - Also a brief overview of computer hardware, software, and a look "under the hood". (01/09/2006)
  3. The Python Programming Language Official Website at http://www.python.org/ . This is how you can download your own copy of Python.
  4. John Zelle’s “Teaching with Python Page” – including access to his graphics.py module using in his text.
  5. Calculating the Day of the Week from the Date : The reasoning behind the algorithm used in the programming assignment.
  6. 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
  7. 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 and Lab Programs

1.      Lab 02 (09/04/2008)

2.      Lab03 (09/11/2008)

3.      Lab04 (09/18/2008)

4.      Text File Demo Programs (09/19/2008)

5.      Lab08 (10/16/2008)

6.      Lab09 (10/23/2008)

7.      Lab10(10/30/2008)

8.      Lab11(11/06/2008)

9.      Lab12(11/13/2008)

10.  Lab13(11/20.2008)

11.  Lab14(12/4/2008)

12.  Lab15(12/11/2008)

 

Links to Supporting Material

1.      Binary numbers, decimal to binary and binary to decimal conversion, signed binary numbers (sign-magnitude & twos complement representation), floating point representation, ASCII character codes. Here are a number of links to documents on this topic

1.      Number Systems and Base Conversions: An introduction to binary, octal, and hexadecimal numbers and how to convert to and from decimal.

2.      Binary to Octal to Hexadecimal and Back: Computers use binary. But binary integers are awkward to work with. Hence the use of octal and hexadecimal notation which is more compact and it’s easy to convert between binary, octal and hexadecimal.

3.      Signed Integer Representations: How do you represent a signed binary integer. There are a number of ways: sign magnitude and two complement.

4.      Floating Point Representation: A brief introduction to floating point representation using a “toy” 8-bit float point representation as an example.

5.      Binary Numbers: A more complete overview of binary, octal, and hexadecimal numbers including the representation of signed integers and floating point representation.

6.      Another more detailed explanation is presented in the .pdf document The Representation of Number on the Computer - Brief Version (01/27/06)

2.      An Introduction to Encryption Methods: Caesar & Vigenere Ciphers

3.      Operating Systems: A Brief Introduction. An Overview of MS-DOS, a command line operating system.

4.      Graphics Module Reference – John M. Zelle – Version 32. Spring 2005: Documentation for Zelle’s graphics.py library

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

6.      How Python Implements Booleans: Like many computer languages Python implements False as 0 and True as any on-zero value.\

7.      The Boolean Data Type and Digital Logic Circuits.

 

Links to Notes on Areas of Interest in Computer Science

  1. 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.
  2. 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.
  3. 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. 


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