Courses in Computer and Communication Sciences (Division 353)

270. Computer Science I. Math. 115 or equivalent. Credit is granted for only one course from among CCS 270 and 274. (3). (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 Sciences, Computer Engineering, or Mathematics. Course work involves writing and running between five and eight computer programs. There may be several quizzes and/or exams. CCS 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.

274. Elementary Programming. Math. 105 or the equivalent. Credit is granted for only one course from among CCS 270 and 274. (3). (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.

Section 013: Permission of Comprehensive Studies Program (CSP). This CSP section, which covers the complete course syllabus, is designed for students who want to be certain that they develop a thorough understanding of introductory computer science and are willing to devote the effort necessary to do so. The required extra class time is provided for in-depth analysis of central concepts, group problem-solving, and computer use.

374. Programming and Computer Systems. CCS 274 or the equivalent. (4). (NS).

This is the second course in the programming sequence for non-honor students and is normally preceded by CCS 274 and followed by CCS 476. 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 CCS 274 and students without knowledge of the ALGOLW language can enroll in CCS 381 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).

Programming Language Short Courses. CCS 380 through 387 form a sequence of four-week short courses (offered for one credit each) which teach details and use of various common programming languages. CCS 380, 384, 385, and 387 are offered each term. Students can take these courses in conjunction with the primary programming course sequence (CCS 270 or 274, 370 or 374, and 476) or independently. Computer problems are assigned; grading is credit/no credit. Consult the Time Schedule for specific starting dates.

380. FORTRAN Programming Language. CCS 270 or 274 (may be elected concurrently). No credit granted to those who have completed Engin. 102. (1). (Excl). Offered mandatory credit/no credit.

See introductory statement regarding programming short courses. Will meet last four weeks of the term.

384. SNOBOL Programming Language. CCS 370 or 374. (1). (Excl). Offered mandatory credit/no credit.

See introductory statement regarding programming short courses. Will meet second four weeks of the term.

385. LISP Programming Language. CCS 370 or 374. (1). (Excl). Offered mandatory credit/no credit.

See introductory statement regarding programming short courses. Will meet first four weeks of the term.

387. Various Programming Languages. CCS 270 or 274. (1). (Excl). Offered mandatory credit/no credit.

A PASCAL programming course is offered twice this term. You may elect either the first four weeks or the second four weeks (not both). See introductory statement regarding programming language short courses.

400. Foundations of Computer and Communication Sciences. ECE 367 or permission of instructor. (3). (NS).

This is a basic course in the theory of Computer Science. It is required for CCS concentration. Prerequisites are ECE 367 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.

469. History of Computers. Declared CCS or ECE concentration, and permission of instructor. (3). (NS).

This course covers the history of computing from the abacus to the emergence of the stored-program computer. The emphasis is on digital computers and control devices, but analog machines will also be covered. All devices and machines are presented and evaluated in terms of the needs they satisfied, the technology available to meet those needs, and the logical and architectural design of the machine. We will trace the sequence of discoveries, and for each evaluate its workability, its conceptual contributions, and its causal influences. Issues of credit, especially the patent controversies stemming from the first electronic computers, will be explained and evaluated. ENIAC, the first general-purpose electronic computer, will be the high point of the course. There will be a laboratory session with the departmental exhibit of this machine. We will trace in detail how the ENIAC led to the first stored-program computer. This course offers broad, historical subject matter to students. It aims to give them an historical perspective on an important part of our contemporary technology and to show the inventive process in its historical context. (Burks)

476. Data Structures. CCS 370 or 374 or the equivalent. (4). (NS).

This is the fourth course in the programming sequence for CCS concentrators and is normally preceded by CCS 270, 271, and 370. 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.

478. Introduction to Software Architecture. CCS 370 or 374; or permission of instructor. (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 CCS concentrators. Students are recommended (but not required) to take CCS 476 before enrolling in this course. Textbook: R.S. Pressman, Software Engineering: A Practitioner's Approach. (Rajlich)

502. Special Topics in Computer and Communication Sciences. Permission of instructor. (2-4). (NS). May be repeated for credit.

Students enrolling in CCS 502 this term must have completed CCS 400, and it is recommended that students should also have completed CCS 476. CCS 502 will provide an introduction to research in Artificial Intelligence. The two basic themes of AI, Representation and Search, will be studied in abstract and in some of the many application areas of AI. The course will consist of three hours a week of lecture plus one hour a week of tutorial/problem-solving session given by a TA, both starting after the initial four weeks of CCS 385. It is anticipated that the course will cover the following areas (not necessarily in non-overlapping fashion): (a) An historical outline: based on papers by Turing and Nilsson; (b)Representation: State-space (graph) representation, Problem- reduction (Hypergraph) representation. Macro-moves. Representation transformation (Gaschnig, Amarel, Korf); (c) Search: Backtracking (Depth-first, Breadth-first, Best-first), Forward-Checking, Branch and Bound, A*, AO*, SSS*; (d) Applications: Computer vision (Waltz, Rosenfeld, Haralick), Symbolic Integration (Slagle) Theorem Proving, Games and Puzzles. Expected work: Students may be required to implement algorithms, run experiments, solve problems, and/or survey research papers. No exam will be required. Text: Problem-Solving Methods in Artificial Intelligence by Nilsson (1971, McGraw-Hill). Recommended: Techniques in Artificial Intelligence, Shapiro (1979, Van Nostrand).) A course pack will be provided. Corequisites: CCS 385: LISP short course. If not already taken, this should be taken for the first four weeks of the term. (Nudel)

520. Foundations of Formal Systems. Graduate standing in Computer and Communication Sciences or permission of the instructor. (3). (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.

575/CICE 575. Compiler Construction. CCS 476, CCS 572, or ECE 364; 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. (Volz)

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.