Click here to go to recent lectures. If this
falls behind, please send me email.
Lectures:
- Thursday 1/28
no class
- Tuesday 2/2
Went over most of Chapter 1. My slides for
chapter 1
- Thursday 2/4
Will finish Chapter 1, and start slides for
Chapter 2
- Tuesday 2/9
More from Chapter 2, with a focus on grammars and the BNF notation
- Thursday 2/11
Finish Chapter 2.
Homework
Exercises 2.1 a,b,c; 2.2 a,b,c; 2.4a and 2.4c; 2.14; 2.19
Due beginning of class, Thursday 2/18
- Tuesday 2/16
Begin going over the slides for Chapter 3. As you read Chapter 3, it
would be ok to skip section 3.6.
I'll be using Modula 2 as an example of a procedural language. There
is an
on-line tutorial for Modula 2.
- Thursday 2/18
Extensive discussion of the "dangling-else" homework problem.
- Tuesday 2/23
More discussion of the "dangling-else". Began discussing the Modula
language, especially the question of which procedures can call other
procedures in languages (like Modula, but not C) which allow nested
procedures. I also discussed the use of the Garden Points Modula 2
compiler on the new linuxbeta.gl.umbc.edu.
There is some information on how to use
the Modula compiler.
- Thursday 2/25
Continue discussion of the Modula language, with a handout. I think I
also covered some material from Chapter 3.
- Tuesday 3/2
Finish Chapter 3, and discuss the Modula programming assignement. The
assignement is to do Exercise 4.2, on page 143 of the textbook, using
Modula. The data file(s) will be available soon. (See Tuesday 3/9
for details.) There be exactly
one data value on each line of the input data file(s). A line with a
0 marks the end of the data. It's possible that such a line will be
the only line in a data file.
- Thursday 3/4
We'll discuss the first homework assignment. We'll also begin the
slides from Chapter 4.
- Tuesday 3/9
The complete version of the slides for Chapter
4 is available. I'll continue with material from Chapter 4.
Don't worry about sections 4.7 and 4.8, although you should read them
for background or in preparation for CS 341. Most of section 4.9 can
be read, but need not be studied. I will talk about static and
dynamic type checking. If time permits, we'll discuss Exercise
4.10.
Test your Modula program on the data files mt1, mt2, mt3,
and mt4, all of which can be found in my directory ~nicholas/pub/331.
So, for example, if your program is named foo, then the
command
foo <~nicholas/../pub/331/mt1
should cause your program to run with the file mt1 mentioned above.
(Note that if your program is not named foo, then this command probably won't
work :-)
Note that mt4 has data that is invalid according to the problem
specification. It is not necessary for your program to work on mt4,
but it would be nice.
- Thursday 3/11
Continue slides from Chapter 4.
- Tuesday 3/16
Collect the Modula programming assignment. Start slides from Chapter 5.
- Thursday 3/18
Continue with slides from Chapter 5. Preview of the mid-term
exam.
In the slides for chapter 5, I mention a homework problem, namely 5.2
a,b,c. I never got around to making this assignment, so don't worry
about it. It might be helpful when studying for the exam, though.
- Tuesday 3/23 and Thursday 3/25 Spring Break
- Tuesday 3/30
Finish Chapter 5, and more review if needed.
- Thursday 4/1
This will be midterm day.
- Tuesday 4/6
Return and discuss midterms. Begin discussion of Chapter 6. The
slides from Chapter 6.
Wednesday, April 7 is the last day to drop a class
- Thursday 4/8
Continue Chapter 6. Maybe begin discussion of Chapter 7.
The slides from Chapter 7.
- Tuesday 4/13
Finish Chapter 7. Begin discussion of Java. The slides on Java are
now available. Homework assignment based on exercise 6.11.
- Thursday 4/15
Continue covering Java. Code for the echo.java example is
available. Discuss Java programming project.
- Tuesday 4/20
Continue covering Java. Code for the envSnoop.java example is available. I will
probably cover only 44 of the approximately seventy slides for Java.
Programming Assignment
Implement exercise 6.11(b) using Java. I will provide data
files in the directory ~nicholas/../pub/331/. The files will be named
jt1, jt2, jt3 and jt4. (That's the same place
you found the Modula files.) The first data item will be an integer
representing the number of nodes in the graph. The folowing line(s)
of data will consist of ordered pairs of integers. The line 2,3 for
example will indicate an edge from node 2 to node 3. The end of the
edge data will be indicated by the line 0,0. Note that 0 is NOT a
valid node number. No edge will point from a node back to itself.
There will be at most one edge directly connecting any two nodes.
The project is due in class on May 4, 1999.
A copy of the Windows 98 Java Development Kit is available
here. This file is about twenty megs.
Documentation for the Java API is available
here.
Java software for other platforms, and more documentation, is
available at the Javasoft site.
- Thursday 4/22
Finished up the Java slides.
- Tuesday 4/27
Went over the Java needed for the graph reachability project. The
program sample.java that demonstrated I/O
from standard input is now available.
- Thursday 4/29
Went over a Smalltalk handout, from the book "A Taste of Smalltalk."
The data files for the Java project, namely jt1, jt2, jt3 and jt4, are
now available in the directory ~nicholas/../pub/331/
The Java program is now due in class on Thursday May 6. Extra credit
will be given for assignments submitted by the original due date of May 4.
- Tuesday 5/4
Some more Smalltalk, with a demo of Squeak. You can read more about
Squeak on the Squeak Home Page.
I'll also be distributing and probably discussing a paper entitled Design
Principles Behind Smalltalk, by Dan Ingalls, which appeared in
BYTE Magazine August 1981.
- Thursday 5/6
Attempted to demonstrate Squeak on a PC. Also distributed a handout
on ML.
Please note that Squeak 2.4 is not yet available as a single zip file
for Windows. I think Squeak 2.3 is still available, though.
I've made a separate Web page to describe
How To use Squeak on a PC
- Tuesday 5/11
Preview of final exam. More on functional programming using ML and/or
Squeak. There is a version of SML for Windows
95/98/NT in the form of a 7 megabyte self-extracting archive. I
strongly recommend letting the system be installed in the default
(C:\sml) directory.
Final Exam Preview
The emphasis will be on material covered since the midterm, although
topics from before the midterm are fair game.
- Chapter 6
- Chapter 7
- Java
- A program trace involving some sort of graph algorithm is
possible.
- The final will be similar to the midterm with respect to length
and type of questions.
- Thursday 5/13
More preview of final exam. There is a Brief
Overview of Smalltalk available.
Section 15.5 gives an overview of ML. The material in that section,
plus the Extremely Old ML Handout, will be enough to prepare you for
any ML questions.
I will allow you to bring a single page of notes to the Final Exam.
One sheet of 8 1/2 by 11 paper, written on only one side. The exam is
otherwise closed book.
- Tuesday 5/18, 1:00-3:00pm, Final Exam
- Sunday 5/23, final grades have been posted on my office door.
Web resources
Programming Language Research
Free Compilers and Interpreters
Microsoft's Powerpoint Viewer for Windows 95/98 and NT