Courses in Computer Science (Division 353)

181. Introduction to Computer Systems. No credit granted to those who have completed CS 280 or 283 or Engr. 103. (4). (NS).

Computer Science 181 intends to introduce students to computers and help them become computer literate. To achieve this goal we will focus on three main topics: (1) Hardware. How do computers work? How do they process information? What is a bit? a byte? What is the difference between a "mainframe" and a "microcomputer?" (2) Software. How do you write computer programs? What can computers do? What is computer software, exactly ? How do you use a word processor? a graphics package? a business application? How do you run a computer? (3) Social Impact of Computers. How do computers affect business? How do they affect people? How are they changing our world? How far can computer technology advance in the future? Is computer-aided robbery less a crime than armed robbery? Should a "whiz-kid" who destroys valuable information in a government data base be treated like a criminal? Our search for answers will be intensive: three lectures and six hours of TA-assisted lab will meet each week. Broad topics and concepts will be introduced in lecture, while lab recitations will generally focus on details and questions. Labwork will consist of using various software packages (such as MacWrite, MacPaint, MacPascal, and Multiplan) on the Apple Macintosh. Texts will include: Pattis, Karel the Robot; Sanders, Introduction to Computers; Moll/Folsom, Macintosh Pascal, and Lasselle/Ramsay, Macintosh Multiplan. Grades will be determined by a final exam, two midterms, three software projects, one short paper and weekly homework and lab assignments (Galler)

280(270). Computer Science I. Math. 115 or equivalent. Credit is granted for only one course from among CS 280 and 283. (4). (NS).

This is the first course in Computer Science for prospective concentrators. It introduces some of the basic concepts of algorithm and program preparation, using the PASCAL language as a vehicle. Students will be required to attend recitations and to prepare a number of computer programs of increasing complexity. Most of the programs will support the concepts that were introduced, and will be mainly non-numeric in nature. This course is not intended to be simply a course in programming. It is intended for people who will major in Computer Science, Computer Engineering, or Mathematics. Course work involves writing and running between five and eight computer programs. There may be several quizzes and/or exams. CS majors must complete course with a grade of B- or better. No prior experience with computers is necessary or assumed. If enrollment is greater than class size, a screening exam will be administered. A screening examination may be given to enroll people from the waiting list.

283(274). Elementary Programming Concepts. Math. 105 or the equivalent. Credit is granted for only one course from among CS 280 and 283. (4). (NS).

This course is an introduction to programming for people who intend to use the computer as a tool in their profession. The PASCAL Language is used as a vehicle for teaching structured programming methodologies. Students are required to participate in recitation and write five to eight computer programs of varying complexity. The course is a service course and is not considered appropriate for prospective computer science concentrators. There may be several quizzes and/or exams. No prior experience with computers is necessary or assumed.

381(271). Assembly Language Programming. CS 280 or CS 283. (3). (NS).

Machine structure and organization, data representation, memory addressing methods, use of registers, bit manipulation, integer and floating point arithmetic, program linking and subroutines, micro-instructions, program debugging, assemblers and loaders. Students write several programs in IBM 370 Assembler language. Three one-hour lectures and a one-hour discussion per week.

383(374). Programming and Computer Systems. CS 283 or the equivalent. (4). (NS).

This is the second course in the programming sequence for non-concentration students and is normally preceded by CS 283 and followed by CS 480. The course focus is on advanced programming language concepts and hardware/software support for programming and programming languages. The programming language taught and used in the course is the same as in CS 283 and students without knowledge of the Pascal language can enroll in CS 387 concurrently. The four or five required programming exercises are solved in the programming language; other languages may be used to provide examples. Examples of machine organization are taken from the machine being used at the Computing Center; other organizations will be useful for some examples. Homework consists of work problems (not involving programming) and four or five programming exercises. Course format is two lectures per week (one-and-a-half hours each) plus one discussion/problem session each week. Course content is divided into four parts: (1) machine organization (computer structure and machine language; addressing techniques, representation of data; assembly systems; logic, micro-programming, emulation; computer systems organization; and utility and support systems), (2) advanced programming language concepts (review of basic concepts, subprograms, data structures, parallel processing), (3) programming language translation (BNF syntax specification, in-fix and post-fix notation, translation of arithmetic expression from in-fix to post-fix, and structures of compilers), and (4) comparative programming languages (relation to language features to problem domain and programming languages for special domains).

476(400). Foundations of Computer Science. CS 303 or Math. 312 or permission of instructor. (3). (NS).

This is a basic course in the theory of Computer Science. It is required for CS concentration. Prerequisites are EECS 303 or Math 312 only. However, a certain math culture is necessary for a successful study. The recommended textbook is: Elements of the Theory of Computation, by H.R. Lewis and C.H. Papadimitriou, Prentiss-Hall. Methods of instruction are: lectures, intermediate exam, final exam and a lot of homework. Syllabus: (1) A survey of the necessary math tools, (2) Finite automata and regular languages, (3) Context-free languages and pushdown automata, (4) Turing machines and recursive functions, (5) Uncomputability, (6) Introduction to computational complexity.

480(476). Data Structures. CS 380 or 383 and 476 or the equivalent. (4). (NS).

This is the fourth course in the programming sequence for CS concentrators and is normally preceded by CS 280, 381, and 380. Data structuring principles of use in a wide variety of problem solving areas are covered. Alternatives are considered with respect to utilization of storage and time. Lectures and discussion sections.

481(478). Software Engineering. CS 380 or 480, and senior standing. (4). (NS).

The purpose of the course is to teach the student the skills and techniques involved in the design and implementation of large software systems. The format of the course is a lecture for approximately 3/4 of the term, and a work on a project under the guidance of a TA. The grade will be based on two midterms and the project. The course is available to CS concentrators. Students are recommended (but not required) to take CS 480 before enrolling in this course. Textbook: R.S. Pressman, Software Engineering: A Practitioner's Approach.

482(473). Operating Systems. CS 380 and 381, or equivalent. May not receive credit for both CS 482 and 582. (4). (Excl).

Operating system functions and their implementations: linking and loading; resource allocation; virtual memory; scheduling; multi-tasking and synchronization; etc. Students write several substantial programs in the operating system area. Intended for undergraduates (graduate students should take EECS 582). Honors students may take either EECS 482 or 582, but not both.

485(472). Principles of Programming Languages. CS 380, and EECS 303 or Math 312. (4). (NS).

This course deals with the principles and techniques used in the design and implementation of programming languages. Several standard languages such as FORTRAN, ALGOL, PASCAL, SIMULA and LISP will be used for illustrative purposes. Review of basic concepts: formal languages, syntax and semantics, compilers and interpreters, hardware machine organization, basic language elements: data and control structures, procedures, statements and expressions; expression evaluation; control structures: iteration, recursion, coroutines and tasks; name management: parameter passing, non-local references, static and dynamic scoping, static-chains and displays, referencing in coroutines and tasks; storage management: stack- and heap-based, storage for coroutines; elementary translation concepts: lexical and syntax analysis, symbol tables, static type-checking, code-generation. Advanced topics concurrency; semantics. Textbook now recommended but not required: Design and Implementation. Required text: Ellis Horowitz, Fundamentals of Programming Languages; Computer Science Press, 1983. (Thatte)

506(564). Computing System Evaluation. CS 280 or 283; EECS 370 and EECS 501. (3). (NS).

Theory and application of analytic methods for evaluating the performance of reliability of computing systems. Measures of performance, reliability, and performability. Reliability evaluation: classification and representation of faults, stochastic process models, coherent systems. Performance evaluation: Markovian queueing models, networks of queues. Unified performance-reliability evaluation. (Meyer)

574(520). Theoretical Computer Science I. Graduate standing in EECS or permission of the instructor. (4). (NS).
Theoretical Computer Science I.
A review of the automata theory and context-free grammars. General grammars, recursive functions, logic, complexity theory and applications of the above.

582(573). Operating Systems. CS 380, 381, and 480; and in Honors program or graduate standing. May not receive credit for both CS 482 and 582. (4). (NS).

Operating system functions and their implementations: linking and loading; resource allocations; virtual memory; scheduling; multi-tasking and synchronization; etc. Advanced topics include multiprocessing, network operating systems, and performance evaluation. Students write two or three substantial programs.

583(575). Compiler Construction. CS 480 or the equivalent. (4). (NS).

Introduction to compiling techniques including parsing algorithms, semantic processing, and code generation. With the aid of a compiler writing system, students implement a compiler for a substantial programming language. Other topics include portability, bootstrapping, parser generation, compiler writing systems. Very heavy programming load. (Kortesoja)

592(565). Artificial Intelligence. EECS graduate standing or CS Honors undergraduate. CS 385 and 592 should be taken concurrently. (4). (NS).

A thorough introduction to the fundamental concepts of artificial intelligence. Emphasis is placed on the major techniques developed for searching, knowledge representation, planning and problem solving, rather than on particular applications of artificial intelligence. Includes an introduction to LISP programming.

593(525). The Human as an Information Processing System. Graduate standing and permission of instructor. (3). (NS).

Basic human information handling processes such as perception, learning, cognitive map formation, and problem solving are analyzed in an evolutionary context. Emphasis is largely theoretical. Includes the application to the human-computer interface of the principles that emerge. (Kaplan)

594(524). Introduction to Adaptive Systems. CS 476 or the equivalent. (3). (NS).

A study of programs and automata that "learn" by adapting to their environment; programs that utilize genetic plans for learning are a major topic. Samuel's checker-playing program, prototypes of several well-known artificial intelligence systems, parallel automata and the Fisher-Kimura development in mathematical genetics are among the topics discussed. (Holland)

lsa logo

University of Michigan | College of LS&A | Student Academic Affairs | LS&A Bulletin Index

This page maintained by LS&A Academic Information and Publications, 1228 Angell Hall

The Regents of the University of Michigan,
Ann Arbor, MI 48109 USA +1 734 764-1817

Trademarks of the University of Michigan may not be electronically or otherwise altered or separated from this document or used for any non-University purpose.