Iowa State University Courses and Programs 1997-1999

97-99 Catalog Home | Index of Departments | Schedule of Classes | General Course Info | Registrar's Homepage
100 | 200 | 300 | 400 | Graduate Courses

Computer Science (Com S)

Com S 103. Computer Applications. (3-2) Cr. 4. F.S. Introduction to microcomputer literacy and applications. Applications: word processing, spreadsheets, database management. Literacy: the history of computing, algorithm development, structure of computers, telecommunications, computer ethics, and computer crime. No prior computer experience necessary.

Com S 104. Introduction to Computers. (3-2) Cr. 4. F. Use of personal computer and workstation operating systems and software. Overview of machine architecture and telecommunications. Project-oriented approach to word processing, spreadsheet, presentation, database management, e-mail, Internet usage, HTML and other software. Beginning programming in Visual BASIC, and animation scripting. Topics from computer history, programming languages, algorithm development, and societal impact. No prior computer experience necessary. This course is for computer science majors.

Com S 107. Applied Computer Programming. (3-0) Cr. 3. F.S. Prereq: Math 104 or 140 or 150. Introduction to computer programming for non-majors using a PASCAL-like language. Basics of good programming, computer systems, files, use of an editor and a command language.

Com S 201. Computer Programming in COBOL. (3-0) Cr. 3. F.S. Prereq: 107 or 207 or 227. Computer programming using the COBOL language. Emphasis on the design, writing, debugging, and testing of business applications programs in a transaction-oriented environment.

Com S 205. Computer Programming in FORTRAN. (Same as Math 205.) (3-0) Cr. 3. F. Prereq: Credit or enrollment in Math 166. Introduction to computer programming using the FORTRAN language. Emphasis on design, debugging, and testing of numerical algorithms. Engineering and physical science applications stressed. For students in engineering and physical science.

Com S 207. C Programming I. (3-1) Cr. 3. F.S. Prereq: Math 150 or placement into Math 140/141/142 or higher. An introduction to computer programming using the C and/or C++ programming language. Emphasis on basics of good C and/or C++ programming techniques and style through extensive practice in writing, running, and debugging programs. This course is designed for nonmajors; those contemplating a major in computer science should take 227. Credit may not be applied toward graduation for both 207 and 227.

Com S 208. C Programming II. (3-1) Cr. 3. F.S. Prereq: 207, credit or enrollment in Math 151, 160, or 165. An introduction to data structures and algorithm analysis using C or C++ languages. Recursion. List and file processing. Dynamic data structures. Emphasis on writing and running programs. This course is designed for nonmajors. Credit may not be applied toward the major.

Com S 227. Introduction to Computer Programming. (3-1) Cr. 3. F.S. Prereq: Math 141/142 or placement into Math 165 or higher. An introduction to computer programming. Symbolic and numerical computation. Recursion and iteration. Modularity and data abstraction. Object-oriented techniques. Imperative programming. Emphasis on principles of programming and program design through extensive practice in writing, running, and reasoning about programs. This course is designed for majors. Credit may not be applied toward graduation for both 207 and 227.

Com S 228. Introduction to Data Structures. (3-1) Cr. 3. F.S. Prereq: 227, credit or enrollment in Math 165. An object-oriented approach to data structures and algorithms using C++ language. Object-oriented programming. Program correctness. Stacks, queues, trees, searching, sorting, analysis of algorithms, graphs, and file processing. Emphasis on writing and running programs. This course is designed for majors.

Com S 290. Independent Study. Cr. arr. F.S. Prereq: Permission of instructor. Offered on a satisfactory-fail grading basis only. H. Honors.

Com S 301. Careers in Computer Science. (1-0) Cr. R. Half semester. F.S. Computer science as a profession. Introduction to career fields open to computer science majors. Relationship of coursework to careers. Presentations by computer science professionals. Offered on a satisfactory-fail grading basis only.

Com S 309. Software Development Practices. (3-1) Cr. 3. F.S. Prereq: 208 or 228. A practical introduction to methods for managing software development. Process models, requirements analysis, structured and object-oriented design, coding, testing, maintenance, cost and schedule estimation, metrics. Nonmajor graduate credit.

Com S 311. Design and Analysis of Algorithms. (3-1) Cr. 3. F.S. Prereq: 208 or 228, 330 or Cpr E 310. Basic techniques for design and analysis of efficient algorithms that act on data structures. Set manipulation, sorting, graph processing, and memory management algorithms. Programming projects. Nonmajor graduate credit.

Com S 321. Introduction to Computer Architecture and Machine-Level Programming. (3-1) Cr. 3. F.S. Prereq: 107 or 207 or 227; and credit or enrollment in Cpr E 210. Machine-level programming including assembly language. Input/output and interrupts. Introduction to computer architecture and organization with emphasis on instruction sets, memory-hierarchy design, and performance. Nonmajor graduate credit.

Com S 330. Discrete Computational Structures. (3-1) Cr. 3. F.S. Prereq: 207 or 227 and Math 165. Concepts in discrete mathematics as applied to computer science. Logic, set theory, relations, graphs, combinatorics and their computational aspects. Nonmajor graduate credit.

Com S 331. Theory of Computing. (Same as Ling 331.) (3-1) Cr. 3. F.S. Prereq: 330 or Cpr E 310. Models of computation: finite state automata, pushdown automata and Turing machines. Study of grammars and their relation to automata. Limits of digital computation, unsolvability and Church-Turing thesis. Chomsky hierarchy and relations between classes of languages. Nonmajor graduate credit.

Com S 342. Principles of Programming Languages. (3-1) Cr. 3. F.S. Prereq: 321, credit or enrollment in 331, and either 309 or 361. Organization of programming languages emphasizing language design concepts and semantics. Study of language features and major programming paradigms, including functional programming. Programming projects. Nonmajor graduate credit.

Com S 352. Introduction to Operating Systems. (3-1) Cr. 3. F.S. Prereq: 321, 361. Survey of operating system issues. Introduction to hardware and software components including: processors, peripherals, interrupts, process and memory management, deadlocks, file systems, protection, virtual machines and system organization. Programming projects. Nonmajor graduate credit.

Com S 361. File Organization and Processing. (3-1) Cr. 3. F.S. Prereq: 208 or 228. Concepts and techniques of structuring and processing data on external storage devices. Hardware and its parameters. Basic file organization including: sequential, indexed, indexed sequential, and hash files. Hybrid file organization. Nonmajor graduate credit.

Com S 398. Cooperative Education. Cr. R. Required of all cooperative students. Prereq: Permission of department chair. Students must register for this course prior to commencing each work period.

Com S 401. Computer Based Information Systems. (2-2) Cr. 3. F. Prereq: 361, Engl 105, Sp Cm 212 and an additional 9 credits in Com S at the 200 level or above. Systems concepts and implementations for supporting production-oriented information systems; data and terminal access methods; operating systems implementations; data base management systems implementations; data dictionary considerations; data communication considerations; lab experiments and implementations. Oral and written reports. Nonmajor graduate credit.

Com S 403. Computer Based Instructional Systems. (2-0) Cr. 2. F. Prereq: 208 or 228. Principles, techniques, languages, and support systems for development and delivery of instructional software used in education and industry. Programming project emphasizing computer scientist's role on a development team. Nonmajor graduate credit.

Com S 411. Specification and Design in Software Engineering. (3-1) Cr. 3. Alt. F., offered 1998. Prereq: 311 or Cpr E 305, Engl 105, Sp Cm 212. Principles and techniques for methodical construction of quality software. Software requirements specification; programming paradigms; module specification techniques; testing and validation procedures; proof of program correctness. Emphasis on team projects. Oral or written reports. Nonmajor graduate credit.

Com S 425. High Performance Computing for Scientific and Engineering Applications. (3-1) Cr. 3. Alt. S., offered 1998. Prereq: 330, Engl 105, Sp Cm 212. Introduction to high performance computing using different computing platforms including parallel computers and workstation clusters. Discussion of performance, visualization, and software development issues. Sample applications from science and engineering. Practical issues in high performance computing will be emphasized via a number of programming projects and case studies. Oral and written reports. Nonmajor graduate credit.

Com S 440. Principles of Compiling. (Dual-listed with 540.) (3-1) Cr. 3. S. Prereq: 342, Engl 105, Sp Cm 212. Techniques of lexical analysis, top-down and bottom-up parsing, semantic analysis and code generation. Principles are reinforced through a number of programming projects. Different projects will be assigned to students depending on whether they have enrolled for 440 or 540. Oral or written reports. Nonmajor graduate credit.

Com S 454. Implementation of Operating Systems and Distributed Computing Environment. (Dual-listed with 554.) (3-1) Cr. 3. Alt. S., offered 1999. Prereq: 311, 352, Engl 105, Sp Cm 212. Laboratory course dealing with practical issues of design and implementation of operating systems and distributed computing environments. These include process management, device drivers, file systems, interrupts and signal handlers, remote procedure call, and multithreading. Graduate credit requires additional in-depth study of advanced operating systems. Oral or written reports. Nonmajor graduate credit.

Com S 461. Introduction to Database Systems. (3-1) Cr. 3. F. Prereq: 311, 361, Engl 105, Sp Cm 212. Introduction to database concepts, data models (relational, hierarchical, and network models), data manipulation languages, data description languages, system implementation issues, security and data integrity. Oral and written reports. Nonmajor graduate credit.

Com S 471. Computational Linear Algebra and Fixed Point Iteration. (Same as Math 471.) See Mathematics. Nonmajor graduate credit.

Com S 472. Principles of Artificial Intelligence. (Dual-listed with 572.) (3-1) Cr. 3. F. Prereq: Engl 105, Sp Cm 212, Com S 330 or Cpr E 310, Com S 342, or comparable programming experience. Foundations, scope, and problems of artificial intelligence (AI) and cognitive science. State-space search techniques for problem solving. Knowledge representation and automated inference. Machine learning. Neural and evolutionary approaches to AI. Artificial life. Selected applications in planning, machine perception, analysis, design, and intelligent agent architectures. AI programming using common LISP. Graduate credit requires a research project and a written report. Oral or written reports. Nonmajor graduate credit.

Com S 474. Elements of Neural Computation. (3-1) Cr. 3. S. Prereq: Engl 105, Sp Cm 212, Math 165, 330 or Cpr E 310, and programming experience. Introduction to theory and applications of neural and evolutionary computation. Mathematical and computational models of neurons and networks of neurons. Neural associative memories, pattern classifiers, function approximators, and learning algorithms. Stochastic search and genetic algorithms. Applications in artificial intelligence, cognitive and neural modeling, computer science and robotics. Hands-on experience with neural and evolutionary computation emphasized through the use of simulation tools and laboratory projects. Oral and written reports. Nonmajor graduate credit.

Com S 481. Numerical Solution of Differential Equations and Interpolation. (Same as Math 481.) See Mathematics. Nonmajor graduate credit.

Com S 484. Computer Organization and Design II. (Same as Cpr E 484.) See Computer Engineering. Nonmajor graduate credit.

Com S 490. Independent Study. Cr. arr. F.S. Prereq: 6 credits in computer science, permission of instructor. No more than 9 credits of 490 may be counted toward graduation. Offered on a satisfactory-fail grading basis only. H. Honors.

Com S 495. Seminar. Cr. arr. F.S. Prereq: Permission of instructor. Offered on a satisfactory-fail grading basis only.

Com S 507. Numerical Solution of Ordinary Differential Equations. (Same as Math 507.) See Mathematics.

Com S 509. Computational Methods of Linear Algebra. (Same as Math 509.) See Mathematics.

Com S 511. Design and Analysis of Algorithms. (3-0) Cr. 3. F. Prereq: 311, 330. A study of basic algorithm design and analysis techniques. Advanced data structures, amortized analysis, and randomized algorithms. Applications to sorting, graphs, and geometry. NP-completeness and approximation algorithms.

Com S 512. Formal Methods in Software Engineering. (3-0) Cr. 3. S. Prereq: 311, 330. A survey of formal topics relevant to the software life-cycle process including requirements, specifications, design, implementation, testing, and maintenance. Implications of formal results for software prototyping and automated testing.

Com S 524. Computer System Architecture. (3-0) Cr. 3. F. Prereq: 352, or Cpr E 305. Fundamentals of computer design, performance and cost, instruction set design, basic processor implementation techniques, pipelining, memory design, caches, I/O systems, multiprocessor systems, interconnection networks.

Com S 525. Numerical Analysis of High Performance Computing. (Same as Cpr E 525, Math 525.) See Computer Engineering or Mathematics.

Com S 531. Theory of Computation. (3-0) Cr. 3. S. Prereq: 331. A systematic study of the fundamental models and analytical methods of theoretical computer science. Computability, the Church-Turing thesis, decidable and undecidable problems, and the elements of recursive function theory. Time complexity, logic, Boolean circuits, and NP-completeness. Finite-state and pushdown computation.

Com S 540. Principles of Compiling. (Dual-listed with 440.) (3-1) Cr. 3. S. Prereq: 342. Techniques of lexical analysis, top-down and bottom-up parsing, semantic analysis and code generation. Principles are reinforced through a number of programming projects. Different projects will be assigned to students depending on whether they have enrolled for 440 or 540.

Com S 541. Programming Languages I. (3-1) Cr. 3. F. Prereq: 342 or 440. Survey of the goals and problems of language design. Formal and informal studies of a wide array of programming language features including type systems, naming, state, and control. Creative use of functional, object-oriented, declarative, concurrent, and other programming paradigms.

Com S 542. Programming Languages II. (3-0) Cr. 3. Alt. F., offered 1997. Prereq: 440. Compilation theory and techniques, emphasis on high-level software tools to facilitate compiler construction. Lexical analysis, parsing, attribute grammars, code generation and optimization for traditional and nontraditional languages and architectures.

Com S 552. Principles of Operating Systems. (3-0) Cr. 3. S. Prereq: 352. A comparative study of high-level language facilities for process synchronization and communication. Formal analysis of deadlock, concurrency control and recovery, and system performance. Protection issues including capability-based systems, access and flow control, encryption, and authentication.

Com S 554. Implementation of Operating System and Distributed Computing Environment. (Dual-listed with 454.) (3-1) Cr. 3. Alt. S., offered 1999. Prereq: 311, 352. Laboratory course dealing with practical issues of design and implementation of operating systems and distributed computing environments. These include process management, device drivers, file systems, interrupts and signal handlers, RPC and Multithreading. Graduate credit requires additional in-depth study of advanced operating systems.

Com S 561. Principles of Database Systems. (3-0) Cr. 3. S. Prereq: 311 and 352. Introduction to database system concepts. Physical data organization. The network model and the DBTG proposal. The hierarchical model. The relational model. Relational query languages. Functional dependencies. Multivalued dependencies. Decomposition of relation schemes. Normal forms. Query systems. Query optimization. Concurrency control. Distributed database systems.

Com S 572. Principles of Artificial Intelligence. (Dual-listed with 472.) (3-1) Cr. 3. F. Prereq: 330 or Cpr E 310, Com S 342 or comparable programming experience. Foundations, scope, and problems of artificial intelligence (AI) and cognitive science. State-space search techniques for problem solving. Knowledge representation and automated inference. Machine learning. Neural and evolutionary approaches to AI. Artificial life. Selected applications in planning, machine perception, analysis, design, intelligent agent architectures. AI programming using Common LISP. Graduate credit requires a research project and a written report.

Com S 582. Principles of Virtual Reality. (3-0) Cr. 3. S. Prereq: 311, 342, 352. Principle concepts of virtual reality systems. Design and implementation of graphics, animation, and virtual reality environment software.

Com S 586. Computer Network Architectures. (3-0) Cr. 3. F. Prereq: 511, 552 or Cpr E 489. Design and development of advanced computer communication networks: distributed and failsafe routing in large and dynamic networks, gateways and interconnection of heterogeneous networks, flow control and congestion avoidance techniques, network architectures, communication protocol standards, formal specification and verification of protocols, implementation and conformance testing of protocol standards, network partitioning and intelligent reconfiguration of networks.

Com S 590. Special Topics. Cr. arr. Prereq: Permission of instructor. Offered on a satisfactory-fail grading basis only.

Com S 591. Graduate Orientation Seminar. (1-0) Cr. 1. F. Prereq: Graduate classification. Topics include an introduction to ISU computing facilities, M.S. and Ph.D. degree requirements, career choices, ethics, literature searching, technical presentations, technical writing, ethics in writing, and discussion of research interests and projects by members of the graduate faculty. Required by the M.S. degree and is taken during the first semester of a normal M.S. program. Offered on a satisfactory-fail grading basis only.

Com S 599. Creative Component. Cr. arr. Offered on a satisfactory-fail grading basis only.

Com S 610. Seminar. Cr. arr. Offered on a satisfactory-fail grading basis only.

Com S 611. Advanced Topics in Analysis of Algorithms. (3-0) Cr. 3. Alt. S., offered 1999. Prereq: 511, 531. Advanced algorithm analysis and design techniques. Graph algorithms, algebraic algorithms, NP-completeness, probabilistic and parallel algorithms, intractable problems.

Com S 612. Parallel and Distributed Algorithms. (3-0) Cr. 3. Alt. S., offered 1998. Prereq: 511 or 531. An advanced course in the theory of parallel and distributed computation. Models of computation, Algorithm paradigms and analysis, Lower bounds and impossibility results. Parallel sorting, graph, geometric, algebraic and number-theoretic algorithms. The parallel computation Thesis. P-complete problems and the class NC. Synchronous, asynchronous, partially timed distributed systems. Consensus, mutual exclusion, and resource allocation. Wait-free register implementations. Shared memory and network models. Fault-tolerance. Randomized computation.

Com S 624. Advanced Topics in Computer Architecture. (3-0) Cr. 3. Alt. S., offered 1998. Prereq: 524. Current topics in computer architecture design and implementation. Advanced pipelining, cache and memory design techniques. Interaction of algorithms with architecture models and implementations. Tradeoffs in architecture models and implementations.

Com S 625. Issues in Parallel Programming and Performance. (3-0) Cr. 3. Alt. S., offered 1999. Prereq: 511, 524. Parallel solutions of numerical and non-numerical problems, implementation of parallel programs on parallel machines, performance and other computational issues in parallel programming.

Com S 631. Computational Complexity. (3-0) Cr. 3. Alt. F., offered 1998. Prereq: 531. Advanced study in the quantitative theory of computation. Time and space complexity of algorithmic problems. The structure of P, NP, PH, PSPACE, and other complexity classes, especially with respect to resource-bounded reducibilities and complete problems. Complexity relative to auxiliary information, including oracle computations and relativized classes, randomized algorithms, advice machines, and Boolean circuits. Kolmogorov complexity and randomness.

Com S 632. Circuit Complexity and Parallel Complexity. (3-0) Cr. 3. Alt. S., offered 1999. Prereq: 531. An advanced course in the complexity of Boolean functions and parallel computation. General circuits, bounded-depth circuits, threshold circuits, and monotone circuits. Parallel complexity, including uniform circuits, alternating Turing machines, and parallel RAMs. Additional topics chosen from communication and sorting networks, communication complexity, VLSI complexity, cellular automata, neural networks, and general purpose parallel architectures.

Com S 633. Randomness in Computation. (3-0) Cr. 3. Alt. S., offered 1998. Prereq: 531. Advanced study of the role of randomness in computation. Randomized algorithms, random oracles, and probabilistic complexity classes. One-way functions and pseudorandom generators. Kolmogorov complexity, algorithmic information theory, and algorithmic randomness. Applications chosen from cryptography, interactive proof systems, computational learning, lower bound arguments, mathematical logic, and the organization of complex systems.

Com S 641. Semantic Models for Programming Languages. (3-0) Cr. 3. Alt. S., offered 1998. Prereq: 531, 541. Interpretive, denotational, and logically based models of semantics; application of semantics to program correctness, language specification, and translation.

Com S 652. Topics in Distributed Operating Systems. (3-0) Cr. 3. Alt. F., offered 1997. Prereq: 552. Concepts and techniques for network operating systems: high-level languages and communication protocols, name and object management, concurrency control for consistent distributed data, design of reliable software, protection, performance analysis.

Com S 661. Advanced Topics in Database Systems. (3-0) Cr. 3. Alt. F., offered 1998. Prereq: 561. Advanced topics chosen from the following list: Data dependencies. Data models. Query systems. Query optimization. Null values, partial information and database semantics. Acyclic database schemes. Concurrency control mechanisms. Distributed database systems. Logic and databases.

Com S 672. Computational Models of Learning. (3-0) Cr. 3. Alt. S., offered 1998. Prereq: 572 or 472 or 474. Advanced study of artificial intelligence, neural, statistical, syntactic, evolutionary models and algorithms for machine learning. Inductive learning, classification, grammar induction, function approximation, program induction, inductive logic programming. Computational learning theory (PAC, maximum likelihood, minimum description length and related frameworks). Deductive learning, reinforcement learning, discovery and data mining. Selected applications.

Com S 673. Advanced Topics in Artificial Intelligence and Cognitive Modeling. (3-0) Cr. 3. Alt. S., offered 1999. Prereq: 572 or 472 or 474. Advanced study of selected topics from among the following: machine learning; neural networks; genetic algorithms, genetic programming, artificial life; intelligent agent architectures and robotics; cognitive modeling; computational learning theory; parallel and distributed architectures and algorithms for artificial intelligence.

Com S 699. Research. Offered on a satisfactory-fail grading basis only.

Top