IPFW Home
Undergraduate Course DescriptionsCollage of Undergraduate Course Offerings Concepts

Computer Science

Course code(s): CS

If you are majoring in this discipline, you may want to consider the Science and Engineering Research Semester. See information under Arts and Sciences (Part 3).

CS 106 Introduction to Computers Cr. 3.
A general introduction to computers and their applications with emphasis on breadth of coverage. Computer system components, terminology, programming concepts, and representative applications. History of computing. Contemporary issues. Productivity tools such as spreadsheets, database, computer graphics and their applications. Course will not count toward a bachelor’s degree in the computer science department.
CS 112 Survey of Computer Science Cr. 3.
This course is designed to provide a broad and realistic idea of what computer professionals do and how they do it. It will prepare students for later computing courses, including software development courses, by providing both individual and team hands-on lab experiences with Web design, markup languages (HTML) and JavaScript. Students will be introduced to various professional opportunities and work environments. Current topics in computer science as they relate to society will be covered. Students will gain sufficient programming experience to enable a smooth transition to CS 160 Java programming.
CS 114 Introduction to Visual Basic Cr. 3.
C: MA 150 or MA 153. This course provides an introduction to programming using the Visual Basic language and its integrated development environment. Topics to be covered include the syntax and structure of the VB language; controls, dialog boxes, and other interface tools; menu design; multiple forms; error-trapping; and arrays. Other topics that may be covered include object linking and embedding (OLE); VB for applications; database development using record sets and databound controls; data handling; grids; validation and election; drag and drop; and graphics, and new revisions for interoperability with other languages.
CS 155 COBOL Programming Cr. 3.
P: 161. Study of the COBOL programming language with emphasis on file organization and processing. Topics covered include data types, data definition, subprograms, and parameter passing. Emphasis on developing program structure and style.
CS 160 Introduction to Computer Science I Cr. 4.
P: 112 or equivalent experience, and MA 153. An introduction to computer concepts and the fundamentals of structured programming in a high-level language. Problem-solving techniques, specifications, stepwise refinement, programming style, structure charts, and program documentation. Programming topics include data types, assignments, input/output, subprograms, selection, iteration, arrays, records, text files, and simple searching and sorting.
CS 160H Introduction to Computer Science I Honors Cr. 4.
P: honors eligibility with an SAT math score of 600 or higher, placement into MA 165, or consent of instructor. Equivalent of CS 160 for honors students. An introduction to Java programming features with emphasis on an object-oriented approach.
CS 161 Introduction to Computer Science II Cr. 4.
P: 160; C: MA 175. Continuation of 160. Emphasis on program development including programming style, modularization, data abstraction, abstract data types, and selection and analysis of algorithms. Programming using a structured approach. Topics include recursion, pointers, files, and elementary data structures including stacks, queues, linked lists, and binary trees.
CS 170 C and Data Structures Cr. 3.
P: 160 or ENGR 110. The course will introduce the C programming language including the language syntax, the programming environment, basic data types, complex data types (pointer, array, structures, bit fields, and unions), macros, i/o, and functions. Program development will emphasize modularization, data abstraction, and selection and analysis of algorithms. Other topics include recursion, files, linked lists, stacks, queues, and binary trees. Course projects are related to common engineering and computer science applications. Course will not count toward graduation in the computer science department.
CS 172 Introduction to C Cr. 1.
P: 160. The course will introduce the C programming language including the language syntax, the programming environment, basic data types, complex data types (pointer, array, structures, bit fields, and unions), macros, i/o, and functions.
CS 203 Advanced Visual Basic Cr. 3.
P: 114 or ECET 114. This course continues the study of Visual Basic begun in CS 114/ ECET 114. Topics to be covered include reading and writing of sequential and direct files; custom controls; advanced SQL; the creation of online help; object linking and embedding (OLE): calling DLL procedures (Windows API); class modules; and an introduction to ActiveX components. Student will learn the skills needed to create stand-alone and www-based Visual Basic applications for personal computer use. This course will provide guidance in preparing for the Microsoft Certified Systems Designer examination.
CS 232 Introduction to C and Unix Cr. 3.
P: 161. This course is an introduction to the C language and the Unix operating system. It presumes fluency in a high-level language. The course will focus on standard C and Unix tools, rather than a proprietary version of either. C topics include data types, the syntax for arithmetic, logical and relational functions, control functions, scope, communications with the shell, file i/o, pointers, arrays, structs, typedefs, macro and preprocessor functions, and the use of libraries and multiple source files. Unix topics include the file and directory structures, permissions, shells, standard tools such as history, sort, vi, grep, sed, tar, and make, and simple shell scripting.
CS 256 Applications Software Project Cr. 3.
P: 155, 161, and ENG W234. Project course requiring implementation of an integrated application system from a structured design. Emphasis on structured development techniques and on system and user documentation. Other topics include indexed and relative file organization, JCL, Reportwriter, and introduction to information and business systems.
CS 260 Data Structures Cr. 3.
P: 161 and MA 175. Design and analysis of algorithms that act on data and file structures. Review of linear data structures. Hash tables, tree structures, and graphs. Organization and access of files, memory management. Internal and external searching, sorting, and merging.
CS 270 Assembly Language Cr. 3.
P: 160. Computer hardware organization, the fetch-execute cycle, machine language, and data representation. Assembly language programming, addressing techniques, input/output, calling conventions, procedures and parameter passing, macros, and conditional assembly. Assembler concepts. Emphasis on the development of well-structured programs in assembly language.
CS 271 Computer Architecture Cr. 3.
P: 161 and MA 175. Introduction to computer organization and architecture. Fundamentals of digital logic and representation of numeric and nonnumeric data. Assembly-level organization and programming, including instruction formats, addressing modes, and subprogram call/return. Design of main memory, cache memory, and virtual memory. Interrupt basics, interrupt-driven I/O, DMA, and bus protocols. Processor organization, data paths, the control unit, micriprogramming, pipelining, and performance enhancements. Multiprocessor and alternative architectures.
CS 274 Data Communications Cr. 3.
P: 260. A survey of data communication techniques. Topics include communications media, synchronous and asynchronous transmission, coding, error detection and correction, communications protocols and formats, modulation and demodulation, multiplexing and networking, and the OSI model with emphasis on the physical and data link layers.
CS 280 Survey of Information Technology Cr. 3.
P: 114 or 155, BUS W100 or IET 105. An introduction to information technology development from a perspective using business fundamentals that relate to information systems and the analysis and design of those systems. Topics include competitive, strategic, and technological advantages; collaborative partnerships within e-business; decision making; and databases. Supply chain management, customer relationship management, enterprise resource planning, and other applications will be surveyed.
CS 292 Intermediate Topics in Computer Science Cr. 2–3. (V.T.)
P: consent of instructor. Intermediate seminar addressing current topics or issues in computer science or information systems.
CS 295 Industrial Practicum Cr. 1.
C: sophomore class standing. Practical problems in local industry limited to about 10 to 20 hours per week for which the student may receive some remuneration. May be repeated but the total combined credit that may be applied to a degree is limited to 3. Open only to full-time students.
CS 306 Computers in Society Cr. 3.
C: junior class standing. Case study analysis of the social impacts of computerization and networking. Topics include computer ethics, crime, privacy, security, reliability, and vulnerability. Other topics include cyberphilia, cyberphobia, censorship, depersonalization, disenfranchisement, automated decision making, artificial intelligence, cognitive science, and ergonomics. Students present projects applying these issues to today’s environment.
CS 321 Introduction to Computer Graphics Cr. 3.
P: 260. This is an introductory course in computer graphics. This course introduces fundamental concepts of computer graphics technology and principles to create three-dimensional graphics. Fundamental graphics algorithms are discussed, as well as graphics programming, using a modern graphics standard. Students are expected to complete several programming assignments that implement fundamental computer graphics techniques in the Unix operating system environment.
CS 331 Introduction to C++ and Object- Oriented Programming Cr. 3.
P: 260. An introduction to the C++ language with emphasis on features supporting objectoriented programming. Fundamental data type and operations. Expression evaluation. Selection and iteration constraints. Functions, procedures, and macro. Standard libraries. Classes: declaration and definition; instances; member functions; constructors and destructors; function overloading; inheritance and polymorphism. Stream input and output. Using classes to encapsulate date structure and implementation details.
CS 350 Programming Language Design Cr. 3.
P: 260 and 271. A survey of language design issues and their implications for translation and run-time support. Examination of modern programming languages and features: Abstract data and control structures, procedures, parameter passing mechanisms, block structuring and scope rules, input/output, concurrent execution, and storage management. Models of run time behavior. Comparison of imperative and declarative programming languages.
CS 360 Software Engineering Cr. 3.
P: 260 and ENG W234. This course provides an introduction to the methods of software engineering. Topics include the software development process, software specification using the UML for analysis and design, software metrics, quality assurance and test plans, and organizational and management issues.
CS 364 Introduction to Database Systems Cr. 3.
P: 260. Theory and application of database systems for information organization and retrieval based on the relational model. Includes database models, query languages, data dependencies, normal forms, and database design. Projects include use of commercial mainframe and microcomputer database software.
CS 365 Advanced Database Systems Cr. 3.
P: 364. The first part of the course includes theory of SQL, implementation of some components of DBMS, and a comprehensive project. The second part of the course includes more advanced topics such as recovery; concurrency; and distributed, deductive, and knowledge databases.
CS 366 Structured Analysis Techniques Cr. 3.
P: ENG W234 and CS 260. Methods used in analyzing information systems. Topics include user interviewing and observation, event analysis, data flow diagrams, data dictionaries, minispecifications, decision trees, decision tables, and both logical and physical models. Students practice these techniques in a major structured analysis project resulting in a requirements specification document.
CS 367 Structured Design Techniques Cr. 3.
P: 366. Methods used in designing information systems. Topics include structure charts, module specifications, pseudocode, coupling, cohesion, transform analysis, transaction analysis, and user interface design. Includes the detailed design of an information system and the implementation of a prototype of that design.
CS 368 Human-Computer Interaction Cr. 3.
P: 260. Introduction to general issues surrounding human-computer interaction (HCI). The course presents principles, design methodologies, tools, and evaluation techniques with an emphasis on human-centered interface design and implementation. Other issues covered include HCI aspects of multimedia systems,World Wide Web, computersupported cooperative work, and recent paradigms of HCI.
CS 372 Web Application Development Cr. 3.
P: 274. Introduction to Web application development. Characteristics of Web and application servers; Web engineering principles and application architectures; Web page construction; client and server-side scripting; database interaction; Web application deployment and management; security and performance issues; overview of application-layer protocols.
CS 374 Computer Networks Cr. 3.
P: 274. The design and implementation of data communications networks. Topics include network topologies; message, circuit and packet switching; broadcast, satellite and local area networks; routing; the OSI model with emphasis on the network, transport, and session layers.
CS 376 Advanced Computer Architecture Cr. 3.
P: 271. A comparative study of computer systems and hardware organization. Topics include processor and memory organization, microprogramming, architectural support for operating systems and high-level languages, and I/O organization. Examples of representative architectures.
CS 380 Artificial Intelligence Cr. 3.
P: 260. Fundamental concepts and techniques of artificial intelligence. Search techniques, including local search and constraint satisfaction. Knowledge representation concepts and methods of reasoning. Software agents, machine learning and neural networks,and AI planning systems.
CS 384 Numerical Analysis Cr. 3.
P:160 and MA 166. Iterative methods for solving nonlinear equations; direct and iterative methods for solving linear systems; interpolation and extrapolation; approximation of derivatives, integrals, and functions; numerical techniques for ordinary differential equations; error analysis. Use of mathematical subroutine libraries.
CS 395 Industrial Practice I Cr. 0–3.
P: Junior class standing. Practical problems in local industry limited to about 10–20 hours per week. May be repeated, but the total combined credit that may be applied to a degree is limited to 6. Open only to full-time students. Permission of the department is required.
CS 421 Advanced Computer Graphics Cr. 3.
P: 321. Advanced topics in computer graphics such as three-dimensional rendering, curve and surface design, antialiasing, animation, and visualization. Other topics will be selected depending on current research trends. Through development of projects, students will gain practical experience about modern computer graphics.
CS 460 Capstone Design and Professional Practice Cr. 4.
P: 360 and senior standing. Student teams will participate in the design and implementation of a substantial software project. Topics include practical issues of software development, quality assurance, and deployment, as well as computing ethics and professional practice.
CS 464 Computer Systems Planning Cr. 3.
P: 366. The planning and design of computer systems, including the formulation of corporate requirements, configuration of hardware to satisfy stated requirements, comparison and evaluation of equipment, installation considerations, and implementation procedures.
CS 466 Strategic Issues for Information Systems Cr. 3.
P: 366. Topics in information systems management including strategic planning for competitive advantage, chargeback, systems portfolio risk analysis, security, and assimilating technology advances. Students develop an information systems strategic plan.
CS 467 Project Management Cr. 3.
P: 366 and ENG W234. Covers the techniques required to manage systems development. Topics include project proposal, planning, estimating, organizing, controlling, and completion. Students practice these techniques on a major project using project management software.
CS 472 Operating Systems Design Cr. 3.
P: 260 and 271. The design and implementation of modern multiprocessing operating systems. Topics include concurrent programming, real and virtual storage allocation, resource allocation and deadlock prevention and avoidance, job scheduling, and analytic modeling. Students will complete projects involving concurrency and implement a portion of a multiprocessing operating system.
CS 474 Compiler Construction Cr. 3.
P: 350. Techniques for the syntax-directed translation of modern high-level languages. Topics include grammars and language specification, language design issues, lexical analysis, LL and LR parsing techniques, semantics, symbol table design, code generation, and local optimization. Students are required to implement a compiler for a subset of a structured high-level language such as Pascal or Ada.
CS 486 Analysis of Algorithms Cr. 3.
P: 260 and MA 166. Techniques for analyzing the time and space requirements of algorithms and problems. Application of these techniques to sorting, searching, pattern-matching, graph problems, and other selected problems. Brief introduction to the intractable (NP-hard) problems.
CS 488 Theory of Computation Cr. 3.
P: 350. Mathematical models of computation including finite and pushdown automata and Turing machines and equivalence of different general-purpose models. Grammars and their relation to automata, Church’s Thesis, and limits of computation.
CS 492 Topics in Computer Science Cr. 3.
P: consent of instructor. Seminar addressing current topics or issues in computer science or information systems.
CS 494 Directed Study Cr. 1–3.
C: junior or senior class standing. Independent study for students who desire to execute a complete computer-oriented project. Course may be repeated for credit up to 6 hours toward graduation.
CS 495 Cooperative Experience Cr. 0–3.
For Cooperative Education students only. Permission of the department required.

Dual Level, Undergraduate-Graduate

ACS 544 Performance Modeling and Evaluation of Computer Systems Cr. 3.
Emphasis is placed on the development and study of models for client-server systems, communication networks, and protocols. These models include Petri nets, other analytic models, and discrete event simulation models. Actual systems are modeled and performance predicted. Students are expected to complete a major project using simulation models and a standard simulation language, network modeling package, or a network protocol design tool.
ACS 560 Software Engineering Cr. 3.
P: CS 260 and either CS 460 or CS 367 or equivalent. This course surveys the engineering aspects of software system design. It concentrates on such matters as formal specification and acceptance requirements, testing and quality management techniques, and the use of CASE tools as an aid to development. Depending on time available, it may include an introduction to database design, performance analysis, and project management tools. The course forms part of the required core for the ACS master’s degree.
ACS 562 Systems Analysis and Design Cr. 3.
P: 560 and either CS 460 or CS 367 or equivalent. This course introduces the process of modeling computer system requirements and design using an objectoriented language such as the UML. It presumes an iterative life-cycle, and concentrates on human-oriented aspects of systems development. These include the solicitation and definition of requirements, the design of effective interfaces, and the reconciliation of application and technical needs. Students will carry out a team project. The course forms part of the required core for the ACS master’s degree.
ACS 564 Human-Computer Interaction Cr. 3.
P: 562. A survey of human-computer interaction (HCI) concepts, theory, and practice, including its interdisciplinary nature. Examination of human needs and capabilities, as well as technological opportunities in the design of interactive systems. Provides an overview and introduction to the field of humancomputer interaction and a systematic approach to human-computer design, including tools, techniques, and sources of knowledge. Students are expected to design and evaluate user interface designs in small projects.
ACS 566 The Strategic Role of Information Systems Cr. 3.
P: 562. A study of information systems (IS) as part of the corporate strategy. Topics include strategic planning, role of the chief information officer, value of the corporate information system, IS long-range planning, managing MIS development, managing information technologies and resources, and information systems as a corporate, competitive tool. Students complete case studies and an information systems strategic plan for their term project.
ASC 567 Software Project Management Cr. 3.
P: 562. Consideration of managing the software development process and the implementation of information technologies. Advanced material in project planning, cost and time estimation, mechanisms for monitoring and controlling projects, quality assurance, change management, and leadership and team building. Other topics include project tracking, managing multiple projects, data sharing, communicating plans, and transnational considerations in areas such as staffing and vendor support. Students apply project management software to case studies.
ACS 568 Object-Oriented Systems Development Cr. 3.
P: CS 367 or equivalent. An examination of the concepts of object technology in a language independent fashion, illustrated with examples from specific programming languages. Teaches strategies and patterns for applying object-oriented methodologies to real-world application. Emphasis is on object-oriented programming and objectoriented design. Students are expected to complete large-scale programming and design projects through team programming.
ACS 573 Advanced Operating Systems
Cr. 3. Advanced topics in modern operating systems such as distributed operating systems, client-server models, mutual exclusive and concurrency control, threads models, load balancing, real-time distributed system, distributed file systems, and shared memory. Case studies of contemporary operating systems.
ACS 574 Advanced Computer Networks Cr. 3.
P: CS 274. Introduction to communication networks, the Internet, circuit and packet switching, interfaces between computers and network hardware. Network architecture: OSI seven layer protocol stack, reliable delivery over unreliable channels, transport protocols, datagrams, virtual circuits, internetworking as a fundamental design concept. Network management concepts, client server principles and paradigms, addressing and address resolution algorithms, and remote procedure cells.
ACS 575 Advanced Survey of Database Design, Cr. 3.
P: CS 364. Covers several emerging topics in database modeling, object-oriented databases, distributed databases, client-server databases, knowledge databases, and theory of transactions management. Projects involve Oracle 7, Dev/2000, and Des/2000 (clientserver database management systems by Oracle), Vmark Object Studio (an objectoriented database system), and Coral (a deductive database programming language).
ACS 582 Expert Systems Cr. 3.
P: CS 572. The design and implementation of expert systems. Knowledge representation, organization, and architecture of knowledge-based systems; reasoning with uncertain and incomplete information; justification and explanation; production systems; rule-based programming; knowledge acquisition and knowledge engineering; historical overview and recent applications of expert systems; and languages and tools for building expert systems. Students complete programming assignments with an expert system development tool.
CS 514 Numerical Analysis Cr. 3.
P: 384 or equivalent. Iterative methods for solving nonlinear equations; linear difference equations, applications to solution of polynomial equations, differentiation and integration formulas; numerical solution of ordinary differential equations; roundoff error bounds.
CS 520 Computational Methods in Analysis Cr. 3.
P: MA 351 or 511. A treatment of numerical algorithms for solving classical problems in real analysis, with primary emphasis on linear and nonlinear systems of equations and on optimization problems; the writing, testing, and comparison of numerical software for solving such problems; a discussion of the characteristics of quality software for implementing these algorithms.
CS 543 Introduction to Simulation and Modeling of Computer Systems Cr. 3.
P: STAT 511 or equivalent. Simulation: discrete event simulation, process-oriented simulation, generating random numbers, simulation languages, simulation examples of complex systems. Nondeterministic models: random variables, Poisson process, moment generating functions, statistical inference and data analysis. Modeling: elementary queuing models, network of queues, applications to performance evaluation of computer systems.
CS 547 Information Storage and Retrieval and Natural Language Processing Cr. 3.
Complex data structures: of fields within records, clustered, multilist, and inverted files; key decoding by tree and randomized techniques; overall techniques of classical document-retrieval systems, e.g., the MEDLARS and NASA systems; overall techniques of automatic document-retrieval systems, e.g., TIP and SMART, the internal structure of SMART; question-answering systems; natural-language translation.
CS 572 Heuristic Problem Solving Cr. 3.
Design and development of heuristic problem-solving systems. The emphasis is on the development of general data representations, heuristics, and problem-solving strategies that can be applied to wide classes of problems. The task areas explored include game playing, theorem proving, pattern recognition, semantic information processing, cognitive psychology, design synthesis, robotology, and integrated artificial intelligence systems.
CS 580 Algorithm Design, Analysis, and Implementation Cr. 3.
P: 481 and 483, or 486 and 488. Basic techniques for designing and analyzing algorithms: dynamic programming, divide and conquer, balancing. Upper and lower bounds on time and space costs, worst case and expected cost measures. A selection of applications such as disjoint set union/find, graph algorithms, search trees, pattern matching. The polynomial complexity classes P, NP, and co-NP; intractable problems.
CS 590 Topics in Computer Science Cr. 3.
Selected topics in computer science.

IPFW is an Equal Opportunity/Equal Access University.