Electrical Engineering and Computer Science

Computer Science Course Offerings

CS–101 Introduction to Computer Science (3 credits)
Hands-on introduction to computer science and engineering. Meets with electrical and computer engineering sections of Engineering 101. Includes short introductions to programming, robotics, and sensors. Fall.
CS–105 Survey of Computer Science (3 credits)
Intended for students who are not computer science or engineering majors. Provides broad introduction to various concepts and tools used in computing. Topics include number systems, Boolean algebra, problem solving, computability, databases, networking, Internet/Web, user interfaces, artificial intelligence, robotics, and short introduction to programming. Background should include two semesters of high school algebra. Credit not given for more than one of Computer Science 101 or 105 or Engineering 101.
CS–205 Programming for the Sciences (3 credits)
Explores the power and limitations of using computers in the sciences. Includes the study of various approaches to solving scientific problems such as numerical representations, computational numerical methods, and scientific simulations. Course may not be counted toward graduation for computer science or engineering majors. Prerequisite: Mathematics 134 or 221.
CS–210 Fundamentals of Programming I (3 credits)
Emphasizes problem-solving techniques used in the analysis and design of software solutions, including structured top-down design, abstraction, good programming style, debugging, and testing. Programming constructs covered include control structures, functions, and basic, aggregate, and user-defined data types. Introduction to recursion and dynamic allocation. Fall, spring.
CS–215 Fundamentals of Programming II (3 credits)
Project and problem-solving course emphasizes the use of classes for encapsulation of abstract data types and abstract data structures. Topics include classes, templates, dynamic allocation, searching and sorting, recursion, and exception handling. Introduction to algorithm analysis. Prerequisite: Computer Science 210. Fall, spring.
CS–220 Logic Design and Machine Organization (3 credits)
Introduction to logic design and computer hardware concepts. Topics include Boolean algebra, number representations, sequential logic, counters and registers, microcomputer architecture, and assembly language programming. Spring.
CS–290 Object Oriented Design (3 credits)
In-depth study of abstract data types and objects, including inheritance and polymorphism, frameworks and design patterns, and the use of these principles in problem solving and program design. Prerequisite: Computer Science 215. Spring.
CS–310 Puzzle Programming (1 credit)
Study of problem solving under time pressure. Simulation of the programming contest environment. All problems considered come from past programming contests. Highly recommended for any student interested in programming competitions. Prerequisite: Computer Science 215 or permission of instructor. May be repeated for up to three credit hours. Fall.
CS–315 Algorithms and Data Structures (3 credits)
Design and implementation of algorithms and advanced data structures with attention to complexity and space analysis. Problem-solving strategies including greedy and divide-and-conquer algorithms as well as dynamic programming techniques. Prerequisites: Computer Science 215, Mathematics 370. Spring.
CS–320 Computer Architecture (3 credits)
Studies the architecture of computer systems from four-bit machines to supercomputers. Memory systems, I/O processors, and multi-computer systems are studied in detail. RISC, CISC and Neural Nets are introduced. Establishes the relationship of hardware and software. Includes handson projects dealing with graphical user interfaces and their implementation. Prerequisites: Computer Science 210; Computer Science 220 or Electrical Engineering 254. Spring.
CS–350 Computer/Human Interaction (3 credits)
Study of user interface design, including ergonomic factors. Includes hands-on projects dealing with graphical user interfaces and their implementation. Prerequisite: Computer Science 215.
CS–355 Computer Graphics (3 credits)
Fundamental course in computer graphics. Topics include rendering two and three-dimensional images, two and three-dimensional transformations, line clipping, hidden lines, shading, and perspective projections. Prerequisites: Computer Science 215; Mathematics 323.
CS–375 UNIX System Programming (3 credits)
Coverage of UNIX software development and UNIX administration. Includes discussion of common shells and scripting languages, X Windows, and interprocess communication. Prerequisite: Computer Science 215.
CS–376 Small Computer Software (3 credits)
Introduction to graphical user interface provided by Windows(TM) operating system using C#.NET. Topics include console applications, windows forms, elementary graphics, ASP.Net web forms, ADO.NET, TCP/IP connection between computers, and dynamic-link libraries (DLLs), and/or device drivers. Prerequisites: Engineering 123 or Computer Science 210; Electrical Engineering 254 or Computer Science 220. Same as Electrical Engineering 356. Fall.
CS–380 Programming Languages (3 credits)
Comparative analysis of selected high-level languages. Covers virtual computers represented by various programming languages, representation of data types, sequence control constructs, data access, scoping, typing systems, runtime storage management, languages semantics, alternative, programming paradigms, and parallel language constructs. Prerequisite: Computer Science 215. Fall.
CS–381 Formal Languages (3 credits)
Models of computation including finite automata, regular grammars, regular expressions, pushdown automata, context-free grammars, Turing machines, computability, and undecidability. Prerequisites: Computer Science 210; Mathematics 370. Fall.
CS–390 Software Engineering (3 credits)
Study of the software design and development process in the context of a large group-programming project. Topics covered include: project management, software management, requirements and specifications methods, software design and implementation, verification and validation, aspects of software testing and documentation standards, technical documents, contracts, risks, and liabilities. Prerequisite: Computer Science 215. Recommended: Computer Science 290. Fall.
CS–415 Cryptography (3 credits)
Introduces conventional and public-key cryptography, cryptosystems such as DES and RSA, and applications of cryptography to network and system security. Prerequisites: Computer Science 215; Mathematics 370.
CS–430 Artificial Intelligence (3 credits)
Basic ideas and techniques underlying the design of intelligent computer systems. Topics include heuristic search, problem solving, game playing, knowledge representation, logical inference, and planning. Advanced topics such as robotics, expert systems, learning, and language understanding as time allows. Prerequisite: Computer Science 215. Recommended: Computer Science 315, 380.
CS–440 Databases (3 credits)
Presents database concepts and architectures. Topics include basic file structures, data dictionaries, data models, languages for data definition and queries, and transaction management for data security, concurrency control, and reliability. Hands-on experience with database and query systems. Prerequisites: Computer Science 215; Mathematics 222.
CS–470 Operating Systems (3 credits)
Components of operating systems. Tasking and processing, process coordination and scheduling, memory organization and management, device management, security, networks, distributed and real-time systems. Prerequisite: Computer Science 215. Recommended corequisite: Computer Science 320. Spring.
CS–475 Networks (3 credits)
Digital data communication systems in hardware and software, synchronous and asynchronous communication, standards, protocols, network configurations, network applications. Prerequisites: Computer Science 215; Mathematics 222.
CS–478 Embedded Systems and Real-Time Programming (3 credits)
Covers real-time programming techniques that are commonly used on embedded systems. Topics include real-time operating system concepts, concurrent programming and task scheduling algorithms, mutual exclusion and synchronization methods, and interprocess communication. Students gain real-world experience by writing applications for two popular embedded operating systems. Prerequisites: Electrical Engineering 354 or Computer Science 215; or permission of instructor. Same as Electrical Engineering 458. Spring..
CS–480 Compilers Programming (3 credits)
Theoretical and practical aspects of compiler construction. Covers lexical analysis, parsing, code generation, and code optimization. Includes implementation of a usable compiler. Prerequisites: Computer Science 215; Computer Science 220 or Electrical Engineering 354. Recommended: Computer Science 380.
CS–494 Senior Project Seminar Programming
Provides guidance for the selection of a topic for the senior design project. Projects (some industry-sponsored) are presented for student selection. An outline and short presentation of the project selected is required. Prerequisite: 12 hours of 300-level computer science courses. Computer engineers may substitute Electrical Engineering 494. Spring..
CS–495 Senior Project Phase I (3 credits)
Plan the computer science project and formulate the preliminary design under the guidance of faculty and industrial advisors. Discussion of the relationship of computer science as a discipline to the humanities and social sciences. Preparation of a written formal proposal and an oral presentation of the proposal. Seminar session addresses ethical, environmental, economic, safety, and ergonomic aspects of computer science. Written reaction to seminar topics. Prerequisites: Computer Science 494; GPA of at least 2.0. Computer engineers may substitute Electrical Engineering 495. Fall.
CS–497 Senior Project Phase II Programming (3 credits)
Student completes and builds the design proposed in Computer Science 495. A formal design review is conducted early in the semester. A practice oral report, a written final report, a final oral report, and a demonstration of the completed project are required. Prerequisite: Computer Science 495. Computer engineers may substitute Electrical Engineering 497.
CS–498 Independent Study in Computer Science Programming (1-3 credits)
Independent study of a topic of interest to the student. Requires faculty sponsor and approved detailed study plan.
CS–499 Special Topics in Computer Science Programming (1-3 credits)
Study of topics of special interest. Topics will be announced. May be repeated. Prerequisites will be announced when scheduled.
CS–515 Cryptography (4 credits)
Introduces conventional and public-key cryptography, cryptosystems such as DES and RSA, and applications of cryptography to network and system security.
CS–520 Computer Architecture (4 credits)
Studies the architecture of computer systems from four-bit machines to supercomputers. Memory systems, I/O processors, and multi-computer systems are studied in detail. RISC, CISC, and Neural Nets are introduced. Establishes the relationship of hardware and software. Includes handson projects.
CS–530 Artificial Intelligence (4 credits)
Basic ideas and techniques underlying the design of intelligent computer systems. Topics include heuristic search, problem solving, game playing, knowledge representation, logical inference, and planning. Advanced topics such as robotics, expert systems, learning, and language understanding as time allows.
CS–550 Computer/Human Interaction (4 credits)
Study of user interface design, including ergonomic factors. Includes hands-on projects dealing with graphical user interfaces and their implementation. Prerequisite: Computer Science 215.
CS–555 Computer Graphics (4 credits)
Fundamental course in computer graphics. Topics include rendering two- and three-dimensional images, two- and three-dimensional transformations, line clipping, hidden lines, shading, and perspective projections.
CS–570 Operating Systems (4 credits)
Components of operating systems. Tasking and processing, process coordination and scheduling, memory organization and management, device management, security, networks, distributed and real-time systems.
CS–575 Networks (4 credits)
Digital data communication systems in hardware and software, synchronous and asynchronous communication, standards, protocols, network configurations, network applications.
CS–580 Compilers Programming (4 credits)
Theoretical and practical aspects of compiler construction. Covers lexical analysis, parsing, code generation, and code optimization. Includes implementation of a usable compiler.
CS–590 Software Engineering (4 credits)
Study of the software design and development process in the context of a large group-programming project. Topics covered include: project management, software management, requirements and specifications methods, software design and implementation, verification and validation, aspects of software testing and documentation standards, technical documents, contracts, risks, and liabilities.
CS–597 Thesis Programming (1-4 credits)
Students complete a project to be presented or published in a public forum.
CS–598 Independent Study in Computer Science Programming (1-4 credits)
Independent study of a topic of interest to the student. Requires faculty sponsor and approved detailed study plan.
CS–599 Special Topics in Computer Science Programming (1-4 credits)
Study of topics of special interest. Topics will be announced. May be repeated. Prerequisites will be announced when scheduled.