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

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. It is best to take CS 380 or 383 before taking CS 381.

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. It is best to have CS 480 before taking CS 481.

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: 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).

485(472). Principles of Programming Languages. CS 380 or 480, and CS 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.

492. Artificial Intelligence for Undergraduates. CS 480 or permission of instructor. May not receive credit for both CS 492 and 592. (3). (NS).

It is recommended that students enrolling in Computer Science 492 have a sound background in the theory and practice of programming. The course will require extensive programming in Lisp on Artificial Intelligence projects. No prior knowledge of Lisp is assumed. The first few weeks of the course will be an intensive introduction to programming in Common Lisp on the Apollo workstations. The Lisp portion of the course will explain Lisp programming concepts that are used in AI programming. Special emphasis will be placed on programming concepts such as closures, dynamic versus lexical binding, and object-oriented programming that are used heavily in Lisp and AI, but may be unfamiliar to some students. The implementation of AI methods and concepts in Lisp will be stressed. Students should finish the course with a working knowledge of AI methods and be able to apply AI techniques to their areas of interest. Emphasis will be placed on the applications of basic AI methods for solving problems in diverse fields of engineering, science, and other areas. Fields related to AI such as vision, robotics, natural language understanding, and machine learning will not be covered in detail. The course will include one midterm and a final exam. There will be three to five projects that will involve programming in Lisp. No prior knowledge of Lisp is assumed for the course, so the projects will only require the material covered in the Lisp portion of the course. The course texts will be ARTIFICIAL INTELLIGENCE, 2nd edition, by Patrick Winston and LISP, 2nd edition, by Patrick Winston and Berthold Horn. All course projects will be done on the Apollo workstations using Common Lisp.

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.

574(520). Theoretical Computer Science I. Graduate standing in EECS or permission of the instructor. (4). (NS).

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).

Review of operating system functions and their implementations: multiprocessing, networks on communication, network operating systems, hierarchical memory analysis, user interfaces, object oriented systems, virtual machine 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.

592(565). Artificial Intelligence. EECS graduate standing or CS Honors undergraduate. May not receive credit for both CS 492 and 592. (4). (NS).

This course will address advanced topics in artificial intelligence. It is expected that students have already taken an introductory course in artificial intelligence. Lisp programming, and familiarity with basic techniques in artificial intelligence will be assumed. The topics covered in this course will include: planning, distributed problem solving, knowledge representation, knowledge based systems, uncertainty management, perception systems, learning, natural language understanding, automatic programming, connectionist network, and AI hardware.

598(501-509). Special Topics in Computer Science. Permission of instructor. (2-4). (NS). May be repeated for credit.

SECTION 002 MACHINE LEARNING. In this course we will study recent research on learning in artificial intelligence systems. We will study systems that use many different types of information to learn. For example, we will consider learning based on examples, instruction, analogy, discovery, experimentation, observation, problem solving and explanations. We will compare and contrast the different techniques used for different types of learning and we will consider some of the cognitive aspects of learning. This course will consist of reading and discussing papers from the required texts (see below) and supplementary journal articles. A substantial project will also be required. Required texts: MACHINE LEARNING: AN ARTIFICIAL INTELLIGENCE APPROACH, by Michalski, Carbonell and Mitchell, Tioga, 1983; MACHINE LEARNING: AN ARTIFICIAL INTELLIGENCE APPROACH, VOLUME 2, by Michalski, Carbonell and Mitchell, Morgan Kaufmann, 1986.

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.