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


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

  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. Models of Computation: Finite State Machines and Turing Machines
  8. Computational Complexity:
  9. Networks and the World Wide Web
  10. Societal and Ethical Issues
  11. 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

  1. An Introduction Computer Science 150 - Also a brief overview of computer hardware, software, and a look "under the hood". (01/09/2006)
  2. The Python Programming Language Official Website at http://www.python.org/ . This is how you can download your own copy of Python.
  3. John Zelle’s “Teaching with Python Page” – including access to his graphics.py module using in his text.
  4. How to Write a Program : Notes on techniques to write and test programs (01/11/2008).
  5. Algorithms and Pseudo-code : including material on writing pseudo-code (01/11/2008)
  6. 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)
  7. Procedural Abstraction and Other Terms : a list of terms and ideas including concepts relating to functions and parameters (02/13/2006)  - to be revised!
  8. How a Selection Sort Works: a link to a .pdf file with C++ code and an example! – to be revised!
  9. Defining ADT Operationsto be revised!
  10. Calculating the Day of the Week from the Date : The reasoning behind the algorithm used in the programming assignment.
  11. 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
  12. 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

  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. 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)
  3. 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.
  4. 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.
  5. Notes on Programming Languages- Levels, Types, and Language Translation
  6. 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.
  7. 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. 
  8. Computational Complexity (coming soon):
  9. Networks - (under revision)
  10. Societal Issues (coming soon): 
  11. 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