CS 101: Survey of Computer Science


General Information

   Professor:       Tom Whaley 
   Office:          Science Center Parmly 406
   Office Phone:    458-8813
   Course web page:	http://home.wlu.edu/~whaleyt/classes/101

   Lecture: MWF 1:25-2:20  Science Center T

   Lab:  Section 1: Th 9:05-12:10 Science Center Parmly 405
	 Section 2: Th 2:30-5:35 Science Center Parmly 405
   Textbook:   Schneider and Gersting, 
               An Invitation to Computer Science, 3rd Ed.
               Thompson (Java Version).

               Lambert and Whaley
An Invitation to Computer Science
Laboratory Manual , 2nd Edition
Thompson (Java Version).
  Office Hours:  MWF  10:00 - 11:00 a.m. and by appointment 


Brief Overview

The main goal of this course is to give the student a broad overview of the discipline of computer science. We do this by providing an introduction to four or five major areas of computer science.

We begin with the notion of an algorithm, which is a step by step method for solving a general class of problems. We learn first how to express algorithms in pseudocode, an informal kind of language. Then we learn how to convert the informal versions of algorithms into an actual programming language - Python. In the laboratory, we actually write and test such programs. Next we study some of the important algorithms of computer science and learn how computer scientists classify algorithms according to their efficiencies. Laboratories make use of animations of some algorithms and allow the student to apply classroom theory to predict run times for certain algorithms.

Next we investigate the basic circuits from which computer components are made. You will learn an algorithm for designing simple circuits and will learn the function and workings of the major internal components of the computer. Laboratories allow you to design and test example circuits.

Further insight into the low-level operations of a computer are gained by studying the low level instructions that a computer can execute. To do this, we focus on a very simple, hypothetical computer. We look at its instruction set, how these instructions are carried out in the hardware, and how simple programs can be written at this level. The labs involve writing and testing short machine language and assembly language programs. The simulator used in the lab allows execution of these programs in a step by step mode allowing you to observe what is happening inside the computer at each step.

The final topic in this course is usually one of particular interest to the faculty member teaching the course. This term we will study the applied area of databases along with their access from the world wide web. This will involve very basic introductions to HTML for web page markup, databases and database query language. Classroom demonstrations will show how the database can be accessed via the web. This will give you a basic understanding of the underlying technologies of electronic commerce.

As time permits, there will be an introduction of XML, a markup language for sharing data. This will include applications of XML, perhaps with Google Maps.


Grading

The written work for the course will consist of

Note: All labs must be completed with passing grade in order to pass the course.

The grading scale will be 93-100 A; 90-92 A-; 87-89 B+; 83-86 B; 80-82 B-; 77-79 C+; 73-76 C; 70-72 C-; 67-69 D+; 63-66 D; 60-62 D-; below 60 F.


Attendance

It is very important that you attend class. There will be considerable information given in class that is not available elsewhere. At times, I will give a preview of the lab and the use of the lab software in class.

You should always attend the lab section for which you are enrolled. Make prior arrangements with me if there are extenuating circumstances.


Honor System

Unless stated otherwise, the exams will be done without books or notes and without assistance from other people. You may work with one other person on the homework assignments, but this should be acknowledged on your paper. Lab work should be done individually unless stated otherwise.

 


Classroom Operation

It is important that you ask a question when something is not clear to you. I will always try to treat your questions with respect. In other words, there are no dumb questions. Actually, the chances are that other students have the same question. If we cannot handle the question quickly in class, I’ll work with you out of class either during office hours or by appointment.

Most of my lectures will involve Powerpoint presentations. These presentations will be linked from the course web page; so, you will not need to copy down everything from the slides. If I forget to link a presentation, please give me a call or send an email.

Out of respect for me and your classmates, please be on time and avoid leaving the classroom during the lectures.

Please turn in your assignments on time, done in a neat and readable fashion. I’ll try to always get your work graded and returned in a timely fashion.

 


Tentative Schedule of Lectures and Labs

 

Monday

Wednesday

Lab

Friday

Sept. 7
Week 1
   

Course Introduction
Definition of CS
Algorithms (1.1-1.3)

Algorithms
Pseudocode/Python
(2.1-2.3.1)

Sept. 14
Week 2

Python Assignment
Statements
(Review Pseudocode
Set statement)

Python If Statements
(Review Pseudocode
If statement)

Python Lab 1 Python While Statements
(Review Pseudocode
While statement)
Sept. 21
Week 3
While Statements Algorithms
Searching

(2.3.2-2.3.3)
Python Lab 2

Simple Lists
in Python

Sept. 28
Week 4
Lists in Python Algorithms Searching
in Python
Labs 2,3
Search for value
Search for largest
Algorithms
Sorting
(3.3.3 just the algorithm)

Oct. 5
Week 5
Algorithms
Quicksort

Exam 1

Lab 4
Sort animations
Python Lab 3

Algorithms
Efficiency
(Chapter 3, efficiency)
Oct. 12
Week 6
Algorithms
Efficiency
Algorithms Efficiency
Scatter Plots
Reading Days Reading Days
Oct. 19
Week 7

Logic circuits
Boolean Algebra
(4.3.1)

Logic circuits
Boolean Algebra
(4.2.4,4.3.2,4.4.1)
Lab 6
Sort timing

Logic circuits
Design algorithm (4.4.2)
Oct. 26
Week 8
Binary numbers
(4.2.1 positive numbers and ASCII)
Binary numbers
(4.2.1 negative whole numbers)
Labs 7,8
Logic circuits
Logic circuits
Comparison, adding,
control circuits
(4.4.3, 4.5)
Nov. 2
Week 9
HTML
Web pages

Exam 2

HTML
Web pages

von Neumann
machine (5.1-5.2.1)
Nov. 9
Week 10
von Neumann
machine (5.2.3,5.2.4,5.3)
Assembly language
(6.3.1,6.3.2)

Lab 9
von Neumann
machine
Assembly language
(6.3.3)
Nov. 16
Week 11
Assembly
language
Introduction to
databases (13.3.1)
Lab 10
Assembly Language

Introduction to
databases (13.3.2)
Nov. 30
Week 12
SQL
Database query
language
SQL
Database query
language
Lab 19 - Part 1
SQL

Special Topic
Dec. 7
Week 13
Special Topic Exam 3 Lab 19 - Part 2
SQL
Wrap Up


Homework


Presentations


Labs


Cold Exams