|
Courses Taught |
University of Texas at San Antonio |
Neal R. Wagner |
I taught many courses, but only these are in machine-readable
form. All but CS3743 and CS4313 were online.
For programming projects, see
Projects.
List of All Courses |
Course |
Best Version |
CS 1023 |
Cultural Implications of the
Information Society |
None kept. |
CS 1063 |
Introduction to Computer Programming |
None kept. |
CS 1073 |
Programming for Scientific Applications |
None kept. |
CS 1713 |
Introduction to Computer Science |
Not latest:
Spr98 |
CS 1723 |
Data Structures |
Not latest:
Fall98 |
CS 2073 |
Engineering Programming |
None kept. |
CS 2213 |
Advanced Programming |
Only one:
Spr05 |
CS 2733 |
Computer Organization II |
Latest:
Fall04 |
CS 3323 |
Topics in Programming Languages |
Latest:
Fall99 |
CS 3343 |
Algorithms, |
Latest:
Fall12 |
CS 3723 |
Programming Languages |
Latest:
Fall14 |
CS 3743 |
Database Management Systems |
Only one:
Fall03 |
CS 4313 |
Automata and Formal Language Theory |
Only one:
Spr97 |
CS 4363 |
Cryptography |
Not latest:
Spr03 |
CS 4953 |
Information Theory |
Not offered. |
CS 5363 |
Programming Languages and Compilers | Not kept |
CS 1713: Intro. to Computer Science
Fall03,
Spr01,
Spr98.
- The latest two iterations of this course had mostly standard
content, course materials, and method of teaching it.
The materials were well-prepared, but not the way I would
have taught the course on my own.
CS 1723: Data Structures
Fall01,
Fall98,
Spr97.
- The most recent iteration had required standard content and
course materials, which were well-prepared but not the way
I would have taught the course by myself.
CS 2213: Advanced Programming
Spr05.
- I only got to teach this course once. The students had already
seen Java through data structures, and now we were teaching them C.
My idea was to do C well, but to give them an overview of the differences
and similarities between C, Java, and C++. I planned to improve the
notes at the next iteration.
- I loved my material about self-reproducing programs
(see
Recitation 7 or Self Replicating
C Programs).
CS 2733: Computer Organization II
Fall04,
Spr04,
Fall03,
Spr03,
Fall02,
Spr02,
Fall01,
Spr01,
Fall00,
Spr00,
Fall99,
Spr99,
Fall98.
- The first time I taught this course (Fall 1998), it was particularly
challenging because I had never studied the material. (I've never been
much of a hardware person.) That first time I leaned heavily on the
materials that Kay Robbins had prepared the semester before.
I continued to use some of her materials the whole time I taught the course.
- As time went on, I eased up on the difficulty of the
recitation material because of all the copying that occurred with
harder recitations. (See
MIPS Single-cycle Simulator.)
- I liked teaching the course and admired the textbook. The last
time I taught this course, they came out with the 3rd edition
(with my name in the Preface!).
CS 3323: Topics in Programming Languages
Fall99,
Spr99.
- For many years, UTSA had 1-hour language courses.
Eventually these were replaced by a 3-hour course covering
3 languages, initially Ada/C/Lisp. By the time I taught the
course, the three languages had become Java/C++/Lisp.
- The first time I taught the course, I used a Lisp project
that asked them to write an interpreter for "pure" Lisp.
The resulting interpreter included functions with parameters,
so it wasn't a completely toy system. This assignment was
first conceived by William F. Dowling at Drexel University.
I used the assignment myself at that time, and we worked on it
together, but the details were mostly his. The assignment
and a solution (in C) are at:
Lisp Interpreter.
My solution seems to have some problem with "defun". Since it
once worked, there must be some simple problem.
CS 3343: Algorithms
Fall12,
Spr12,
Spr04 (9 weeks).
Normalize / denormalize
(interesting and related examples that came up).
- I taught the first 9 weeks of this course because the
regular instructor took a leave to take care of a new child.
Initially it was to be 6 weeks, but that stretched out to
9 weeks, complicating the course organization.
- In Spring 2012, because of a shortage of instructors,
UTSA asked me to teach the algorithms course, which I did twice,
long after I had retired.
CS 3723: Programming Languages
Fall14,
Spr14,
Fall13,
Spr13,
Spr05,
Fall04,
Spr04,
Fall03,
Spr03,
Fall02,
Spr02,
Fall01,
Spr01,
Fall00,
Spr00.
- I taught programming languages and compiler courses starting in 1977.
This was not my field, but I got started and continued with them because
of a lack of instructors.
- Before the Spring of 2000, UTSA had a required course
"Topics in Programming Languages", CS 3323. For the Spring 2000 course,
most of my students had already taken CS 3323, so I decided to make it
more challenging by covering mainly compiler topics. I liked these topics
more anyway, and thought they were more worthwhile.
(See All Compilers.)
- In Fall 2002, we added a required 1-hour recitation. I restructured
the homework so that there was something each week. I also came to realize
that if the recitations were too hard, some students would just copy.
- During the lifetime of this course, a high priority for me was to teach
syntax-directed translation. Each time I taught the course I made
this part easier and added other material. The final iteration
(Spr05) still has
a legitimate compiler, but it is feasible to complete in just 3 recitations.
The language is structured so that are tokens are just
single characters, so that a scanner is trivial to write.
(See Simple Compiler.)
- Starting with Spring 2004, I added to the course the Ruby language
as an interesting object-oriented example. This was before Ruby
became so popular.
- Starting with Spring 2013, UTSA had lost 2 of its programming
language instructors, and I got to teach this course 4 more
times, long after I had retired.
- In Spring 2014 I switched from Ruby to Python, mainly because
Python had become much more popular than Ruby. In Fall 2014 I had the
class use only Python for all their programming.
CS 3743: Database Management
Systems
Fall93.
- I no longer have a machine-readable copy.
- The main interesting feature of this course is
a programming project to implement a relational
database management system based on the relational algebra.
(See Database Management System.)
CS 4313: Automata and Formal
Language Theory
Spr97.
- I no longer have a machine-readable copy.
- The main interesting feature of this course is
a programming project to implement a recognizer of
arbitrary regular expressions.
(See Regular Expression Recognizer.)
CS 4363: Cryptography
Spr07 (5 classes),
Spr03,
Spr02.
- This is one of my areas of research. The course is complicated
by the need for mathematics background that few of our students have.
In the end I partially completed a textbook for this course
(not published):
The
Laws of Cryptography.
|