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.

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

370. Computer Science II. CCS 270. (4). (NS).

There will be two parts of the course. Advanced programming will cover introductory data structures, segmentation, software design methodology, and a project. The theoretical part will cover introduction to the theory of programming languages, and computability. The course is a part of preconcentration requirements for Computer Science majors, and must be completed with a grade of B- or better before admission to the concentration will be considered. The students will be evaluated on the basis of a midterm, final, homeworks, and a project. The required text is PASCAL/VS Language Reference Manual, IBM reference number SH20-6168-1 and a set of course packs. Recommended books are P. Grogono, Programming in PASCAL, Addison Wesley 1980, and I. Pohl, A. Shaw, The Nature of Computation, Computer Science Press, 1981. Format is three hours of lecture, one hour of recitation per week. (Frisque)

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

This is the second course in the sequence for non-concentration students. It is normally preceded by CCS 274, and, if desired, may be followed by CCS 476. The focus of the course is on advanced programming techniques and concepts. The primary programming language for this course is PASCAL, and students are expected to be familiar with that language. Students are also introduced to 360/370 Assembly Language, for which no previous exposure is assumed. Course format is three hours of lecture and two hours of discussion section per week. The work load is five or six programming assignments. The course teaches the students the basics of computer organization, data structures, and the analysis of algorithms, as well as good programming practices and techniques. (Frisque)

Programming Language Mini-Courses. CCS 380 through 389 form a sequence of four-week mini-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. (Bird)

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

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

387-389. Special Courses in Various Programming Languages. CCS 270 or 274. (1 each). (Excl). Offered mandatory credit/no credit.

CCS 387 is offered Winter Term, 1984.

CCS 387. 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 mini courses. (Ford)

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. Papadimitrion, 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. (Frisque)

472. Principles of Programming Languages. CCS 370, and ECE 367 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)

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

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

CCS 502 is offered Winter Term, 1984.

Students enrolling in CCS 502 this winter 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 minicourse. If not already taken, this should be taken for the first four weeks of the term. (Nudel)

522. Theory of Automata. CCS 400 or 520, or Math. 481. (3). (NS).

Universal algebra and probability theory with applications in computer science. The rest of the course consists of special topics. This winter special topics will include temporal logic with application to concurrent computations, and the theory of semantics. This is a continuation of CCS 520. Lectures: three hours per week. Tutorials: one hour per week. (Gurevich)

569. Computer Structures. Graduate standing in CCS, CICE or ECE, or permission of instructor. (3). (NS).

The course is devoted to historical and comparative studies of computer architectures. We will begin with the von Neumann organization of the first stored-program computer, consider how it was modified as technology advanced, and go on to some non-von Neumann architectures and program concepts. Students will program some simple problems on these early machines and test their programs by means of a simulator. Students will also design architectural variants of some of these early machines and program problems for them. The topics to be covered include: pipelining, intelligent 10, memory hierarchies, reconfigurable computers, hardware facilities for time-sharing, microprogramming, stack (Polish) memories, and multiprocessing. Our studies will be guided by a classificatory system of dimensions or respects in which computer architectures may vary. We will study various forms of actual and proposed parallel computers with cellular-like structures, some with centralized control and some with decentralized control. These are: vector and array processors; cytocomputers; systolic structures; iterative circuit computers; self-restructuring cellular computers; and computers for executing classifier languages, a non-von Neumann form of production language. Students will develop some simple cellular structures, using a cellular space simulator running on one of the department's computers. (Burks)

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.


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.