|
|
This page is a supplement to what is listed on my background page,
containing some examples of the materials distributed in the last
course I taught. This page also contains the course catalog
descriptions of each course I have taught at Wayne State University.
If you would like more details or a copy of my teaching statement, please
email me at kop@cs.wayne.edu
Course Materials
The last Course I taught was Computer Operating
Systems during the spring/summer session 2003 at Wayne State University. Here
the course goals was to introduce the course to the internals of the
operating system and get the students comfortable working in the UNIX
operation system. UNIX was focused on because of the generally open
architecture and the courses that use this course as a foundation all
require substantial projects to be developed on the department's Sun
network. It should be noted I use the label UNIX to cover all flavors
that exist (Solaris, Linux, BSD, OS X, etc).
Below are four links containing materials that were
distributed during the course, consisting of the syllabus and the three
course projects.
| Syllabus |
|
Contains contact information, course requirements, student
expectations, additional resources, exam/project grade weighting, grading scale, and
course schedule.
|
| Project 1 |
|
Create a command line utility using system calls to manipulate the
directory structure.
|
| Project 2 |
|
Concurrent programming assignment using the pthreads library. The
assigned problem was a variation of the producer/consumer problem.
|
| Project 3 |
|
Create a time discrete simulation of the swapping memory management
scheme. The goal of this project was not to create a faithful
simulation of swapping, but to explore the important issues of memory
management. Thus, students were encouraged to determine their own
solutions to perceived implementation issues.
|
Course Descriptions
Below I give the course descriptions for the courses I taught
while at Wayne State University, and also listed on my CV.
Note, Wayne State at one time used a three digit course numbering
system, then went to a four digit system. For my CV and here I
use the four digit system to be current with the present course
listings.
| |
| CSC1000 |
|
Introduction to Computer Science |
| |
|
For non-computer science majors. Brief introduction to
problem solving: analysis, design, implementation and testing
using a general purpose structured programming language.
Introduction to use text editors, word processors, spreadsheets,
databases, and telecommunications.
|
| |
| CSC1010 |
|
Fundamentals of Computer Science |
| |
|
History of computing; computer applications: word processors,
spreadsheets; system design; introduction to programming; program
translation; hardware components; Boolean algebra; artificial
intelligence; computers and society.
|
| |
| CSC3200 |
|
Programming Languages |
| |
|
History and overview of programming languages, virtual machines,
representation of data types; sequence control; data control, sharing
and type checking; run-time storage management; language translation
systems; programming language semantics; programming paradigms.
|
| |
| CSC4100 |
|
Computer Architecture |
| |
|
Data representation; digital logic circuits; instruction formats and
addressing modes; register transfer and microoperations;
microprogrammed control; RISC architecture; memory organization;
pipelined and vector processing; multiprocessors.
|
| |
| CSC4420 |
|
Computer Operating Systems |
| |
|
Operating systems services; file systems; CPU scheduling; memory
management; virtual memory; disk scheduling; deadlocks; concurrent
processes.
|
| |
| CSC4500 |
|
Introduction to Theoretical Computer Science |
| |
|
Finite automata and regular expressions; context-free grammars;
pushdown automata; Turing machines; hierarchy of formal languages and
automata; computability and decidability.
|
|