CMPU-181

What is Computation?

Spring 2013



Instructor Luke Hunsberger
Lectures Mon/Wed @ Noon - 1:15 p.m., OLB 105

Contents and Frequented Links


Overview

This course explores a variety of approaches to computation using basic programming examples in programming languages such as Scheme, Java, Haskell and Prolog that represent alternative programming paradigms. Similar examples from web programming, graphical user interfaces and artificial intelligence are also addressed. Regular writing assignments focus on the different aspects of computation embodied in the many examples.

Nuts and Bolts

We will use the following programming languages in this course:

We may also examine HTML programming for Web pages. In addition, we will use the Latex software to generate publication-quality formatting of written assignments.

Software that enables us to use all of these languages is provided on the lab computers in the computer science department. Each student will have a computer science account that will provide access to all software needed for this course. However, if you want to download this kind of software onto your own computer, it is available from the following sources:

There will be regular writing assignments, usually about one every two weeks.

All assignments must be done individually. No collaboration of any kind is allowed. Any cases of inappropriate collaboration (cheating) have to be reported to the department chair, and will be dealt with promptly.

There will be one in-class exam during the semester, shortly after Spring break. There will also be a final exam. Each will involve composition only.

The elements of the course (assignments and exams) will be weighted as follows when determining your overall grade:

Assignments 70%
Midterm Exam 15%
Final Exam 15%

Academic accommodations are available for students with disabilities who are registered with the Office of Disability and Support Services. Please schedule an appointment with the instructor early in the semester to discuss any accommodations for this course which have been approved by the Director of Disability and Support Services as indicated in your accommodation letter.

Calendar

Monday Wednesday
Jan. 23
Introduction. Code snippets in Scheme, Java and Haskell; and sample latex and pdf files. Scheme summary.
Asmt. 1: Due Monday, Feb. 4, 2013
Jan. 28
Introduction to Scheme: syntax, semantics, primitive data
Jan. 30
Continuing with Scheme: evaluating non-empty lists, the define special form.
Feb. 4
Continuing with Scheme: quote and lambda special forms.
Definitions from class, Interactions from class.
Feb. 6
Continuing with Scheme: conditional expressions and recursive functions.
Code from class.
Asmt. 2: Due Friday, Feb. 15, 2013
Feb. 11
Comparing the performance of the BUBBLE-SORT and MERGE-SORT functions (for sorting a list of numbers into non-decreasing order).
Code from class.
Feb. 13
Guest Lecture: Ben Stoutenburgh -- Command-Line Basics
Feb. 18
Guest Lecture: Prof. Marc Smith
Code from class
Feb. 20
Latex tutorial; HTML tutorial.
Asmt. 3: Due March 1 @ 3:00 p.m.
Feb. 25
Further Latex tricks: footnotes, lists, verbatim. Continuing with HTML.
Feb. 27
Converting Latex to HTML (latex2html manual); Introduction to Java and drJava (drjava.org).
March 4
A Java class definition as a container of (static) methods (e.g., FACTY)
Code from class; Interactions like those seen in class.
March 6
A Java class that contains (1) a template for creating objects; and (2) methods that can be "run" by those objects.
Code from class; Interactions like those seen in class.
SPRING BREAK!
March 25
Graphical applications in Java using Model-View-Controller paradigm! Code from class.
March 27
Code from class.
Asmt. 4: Due Friday, April 5 @ 5:00 p.m.
April 1
MIDTERM EXAM!
This exam will ask you to write one or two essays.
April 3
Prolog! Code from class.
April 8
Sample research paper (writeup.tex, writeup.pdf).
April 10
What is Computation?
April 15
Prolog examples.
April 17
More fun with prolog!
April 22
A sample grammar for a portion of English that simultaneously handles tense agreement, number agreement, and generating parse trees. Prolog code from class.
Asmt. 5: Due Wed., May 1 @ noon!
April 24
Alan Turing's 1950 paper: Computing Machinery and Intelligence; Lessons from a Restricted Turing Test; Loebner's Response; An alternative proposal for a 'Turing Test'.
April 29
Computers and Two-Player Games: Handout; Chess Program; Instructions for Chess Program.
May 1
Neural Networks!
Asmt. 6: Due Wed., May 8th @ 5:00 p.m.
May 6
Last day of class!
May 8
THIS SPACE FOR OFFICE USE ONLY!