|
Professors S.Y. Berkovich, P.S. Bock, J.L. Sibert, R.S. Heller, C.D. Martin, H.-A. Choi, A. Youssef (Chair), B. Narahari, J.K. Hahn, R. Simha, R. Price Jones
Associate Professors S. Rotenstreich, A. Bellaachia, X. Cheng
Assistant Professors P. Vora, M. Burke, N. Zhang
Professorial Lecturers D.C. Roberts, T. Hanson, N. Brenner, G.J. Kowalski, S.H. Kaisler, M. Happel, A. Panchenko, R.A. Fernandez, M. Lancaster, G. Blankenship, D. Christian, S. Delahunty, D. Eisenreich, T. Grissom, A. Hennings, M. Pinkerton
See the School of Engineering and Applied Science for programs of study leading to the Bachelor of Arts and Bachelor of Science with majors in computer science.
Note: With the exception of CSci 53 and 105, CSci courses numbered 110 and below may not normally be counted toward degree requirements for computer science majors.
|
| 1 |
Computer Science Orientation (1) |
Narahari and Staff |
| |
Introduction to the field of computer science. Basic and emerging concepts and applications of computer science. Hands-on experiments and team projects. Technical resources, professional ethics, writing, and presentation. (Fall) |
| 10 |
Applications Software (3) |
Heller and Staff |
| |
Introduction to the use of microcomputer hardware and software for word processing (e.g., Word), spreadsheets (e.g., Excel), and database management (e.g., Access), with emphasis on the use of computers to solve typical problems in academia and business. (Fall and spring) |
| 30 |
Introduction to Computers and the Internet (3) |
Martin and Staff |
| |
Survey of computers and languages. Introduction to computer programming. History of computing and networking. The effects of computing and the Internet on our lives. E-commerce and new technologies. Concepts of web page design. (Fall and spring) |
| 33 |
Introduction to Internet Technology (3) |
Heller and Staff |
| |
An introductory course for non-technical students who wish to obtain a better understanding of the hardware and software that comprise the Internet. Information transfer over fiber, routing and switching of packets, methods of information transfer, protocols, software, ISP, web pages and multimedia. (Fall and spring) |
| 35 |
Introduction to Web Software Development (3) |
Martin and Staff |
| |
Introduction to the Internet. Topics include address and URL to find your way, linking to a URL, HTML and web programming, building a web page, building a home page, client—server techniques. (Fall and spring) |
| 49 |
Introduction to C Programming (3) |
Martin and Staff |
| |
Structured programming with the C language. Control structures. Data types. Use of pointers. Matrix manipulation to solve simultaneous equations. External subroutines for mathematical and graphical applications. Introduction to C++. Complex number representation. Corequisite: Math 20 or 31. (Spring) |
| 50 |
Introduction to FORTRAN Programming (3) |
Bock and Staff |
| |
Structured programming with high-level language using FORTRAN. Control structures. Different data types with emphasis on real and complex number computations. Arrays used with vector and matrix manipulation to solve simultaneous equations. External subroutines for mathematical and graphical applications. Prerequisite or corequisite: Math 20 or 31. (Spring) |
| 53 |
Introduction to Software Development (3) |
Price Jones and Staff |
| |
Introduction to the solution of problems on a digital computer using the Java language. Object-oriented programming concepts; documentation techniques; design of test data. Writing, debugging, and running programs in an interactive computing environment. (Fall) |
| 100 |
Introduction to Programming with C++ (3) |
Martin and Staff |
| |
Intensive introductory course for students with a science, mathematics, or other quantitative background. Solution of numerical and nonnumerical problems on a digital computer using C++ programming language in a Unix environment. Recommended for graduate and advanced undergraduate students in other departments. Prerequisite: Math 32 or equivalent. (Fall) |
| 102 |
Introduction to Programming with Java (3) |
Simha and Staff |
| |
An introductory course in programming a computer, using the Java language. Object-oriented programming, classes, applets, methods, control structures, inheritance, overriding, widgets and the AWT package, containers, and exceptions. (Spring) |
| 103 |
Data Structures and C++ (3) |
Youssef and Staff |
| |
Big-O notation, linked lists, stacks, queues, trees, graphs, searching, sorting, resizeable arrays. Classes in C++, templates, constructors, destructors, exceptions, files, derived classes, operator overloading. May be taken for graduate credit by students in fields other than computer science. Prerequisite: CSci 49 or 100. (Fall) |
| 105 |
Introduction to Computer Security and Information Assurance (3) |
Vora and Staff |
| |
Introduction to key concepts of computer security: risk analysis, basic cryptography, operating system security, network security concepts, database security concepts. Related policy issues such as privacy and intellectual property. May not be taken for credit by computer science majors in the computer security and information assurance option. Prerequisite: CSci 53. (Fall) |
| 110 |
Technology and Society (3) |
Martin and Staff |
| |
Historical, social, and ethical issues of the technological age. Ethical principles and skills and social analysis skills needed to evaluate the design and implementation of complex computer systems. Privacy, computer crime, equity, intellectual property, professional ethics. Data collection, analysis, and presentation; technical writing and oral communication skills. (Fall) |
| 123 |
Discrete Structures I (3) |
Youssef and Staff |
| |
Mathematics for computer science. Sets, functions, sequences. Propositional and predicate calculus, formal proofs, mathematical induction. Matrices, semigroups, groups, isomorphism. Relations, partitions, equivalence relations, trees, graphs. May be taken for graduate credit by students in fields other than computer science. Prerequisite: CSci 1 or 49; Math 20 or 31. (Fall and spring) |
| 124 |
Discrete Structures II (3) |
Youssef and Staff |
| |
Basic discrete techniques in computer science. Algebraic structures, vector spaces, linear transforms, norms, matrices, complex numbers, convolution and polynomial multiplication, Fourier analysis, discrete Fourier transform, number theory. Applications to computer security, coding theory, and audiovisual signal processing. Prerequisite: CSci 123 and Math 31. (Fall) |
| 133 |
Algorithms and Data Structures (3) |
Price Jones and Staff |
| |
Object-oriented software. Inheritance, exceptions, development of classes and applets, event-driven programming. Data structures such as trees, lists, stacks, queues, and strings. Sorting and searching. Introduction to algorithm performance prediction. May be taken for graduate credit by students in fields other than computer science. Prerequisite: CSci 53. (Spring) |
| 135 |
Computer Architecture I (3) |
Narahari and Staff |
| |
Computer organization, structure of primary and secondary memory, cache structure, input/output subsystems, digital logic and chips, microprogramming structures, instruction formats, methods of addressing, and virtual memory. Prerequisite: CSci 123, 133. (Fall) |
| 136 |
Computer Architecture II (3) |
Narahari and Staff |
| |
Assembly and machine language programming, integer and floating-point arithmetic units, design of computer components, design of a simple computer, design of a pipelined computer, design of cache, main memory and virtual memory systems, design of buses, channels and the I/O structure. Prerequisite: CSci 135. (Spring) |
| 143 |
Software Engineering I (3) |
Simha and Staff |
| |
Review of programming techniques and software development in one or more programming languages. Application development with GUIs, database access, threads, Web programming. Prerequisite: CSci 133. (Fall) |
| 144 |
Introduction to Bioinformatics (3) |
Price Jones and Staff |
| |
Same as BiSc 184. |
| 145 |
Programming Languages (3) |
Price Jones and Staff |
| |
Programming language and software design fundamentals. Writing programs in a non-procedural programming language. Closures; procedure and data abstraction; object-oriented, procedural, and declarative programming; continuation compilation and interpretation, and syntactic extension. Advanced control structures appropriate for parallel programming. Prerequisite: CSci 143. (Spring) |
| 146 |
Database Systems and Team Projects (3) |
Narahari and Staff |
| |
Design of relational database systems, relational query languages, normal forms, design of database applications. Team software development, integration, and testing. Professional code of ethics, intellectual property, software copyrights. Corequisite: CSci 143. (Spring) |
| 147 |
Team Project Development and Professional Ethics (3) |
Martin and Staff |
| |
Development of a large software project using a team approach. User interface and interface standards. Integration and testing of modules. Social impact analysis. Professional code of ethics. Intellectual property; computer crime and hackers. Oral presentation and demonstration of the project. Prerequisite or corequisite: CSci 143 or permission of instructor. (Spring) |
| 148 |
Introduction to Biomedical Computing (3) |
Hahn and Staff |
| |
A survey of the problems and solutions in biomedical computing. Application of computers in medicine. Patient care and monitoring systems, electronic medical records, digital imaging and analysis. Telemedicine, medical ethics, health care regulations and organizations. (Spring) |
| 152 |
Foundations of Computing (4) |
Choi and Staff |
| |
Theoretical foundations. Formal languages and automata; regular expressions, context-free languages; finite state automata and pushdown automata; Turing machines and computability, recursive function theory, undecidability. Theory of compiler construction. Lexical and syntax analysis; fundamentals of parsing and parsing techniques; construction and use of lexical and parsing tools. Prerequisite: CSci 135, 143. (Fall) |
| 153 |
Algorithms (4) |
Simha and Staff |
| |
Core concepts in design and analysis of algorithms, data structures, and problem-solving techniques. Hashing, heaps, trees. Graph algorithms, searching, sorting, graph algorithms, dynamic programming, greedy algorithms, divide and conquer, backtracking. Traveling salesman, combinatorial optimization techniques. NP-completeness. Prerequisite: CSci 123, 143. (Fall) |
| 154 |
Operating Systems (4) |
Rotenstreich and Staff |
| |
Process management, process state, concurrent processing, synchronization, events. Operating system structure, the kernel approach, processor scheduling, task switching, monitors, threads. System management, memory management, process loading, communication with peripherals. File systems. Networks and distributed systems: sockets, socket programming, packets, Internet protocols. Prerequisite: CSci 135, 143. (Fall) |
| 160 |
Theory of Computer Translators (3) |
Choi and Staff |
| |
Lexical and syntax analysis, regular expressions, context-free grammars, parsing techniques, top-down parsing, efficient parsing, syntax-directed translation, intermediate formats, flow of control, block structures, procedure calls, symbol tables, run-time storage, error-detection and recovery, code optimization, code generation. Prerequisite: CSci 136, 152. (Spring) |
| 161 |
Software Engineering II (3) |
Rotenstreich and Staff |
| |
Requirements definition, modularity, structured design, data and functional specifications, verification, documentation. Program design. Software tools, maintenance, project organization, design teams, quality assurance. Prerequisite or corequisite: CSci 153. (Spring) |
| 162 |
Cryptography (3) |
Vora and Staff |
| |
Algorithmic principles of cryptography from Julius Caesar to public key cryptography. Key management problems and solutions. Cryptographic systems and applications. Prerequisite: CSci 124, 150, 151. (Spring) |
| 165 |
Pre-Capstone Design Project (1) |
Burke and Staff |
| |
The first in the sequence of three capstone design project courses. Students develop a preliminary design for their project. Requirements include architectural design, user interface specification, and formal written reports. Prerequisite: CSci 152, 153, 154. (Fall and spring) |
| 166 |
Computational Biology (3) |
Simha and Staff |
| |
Pairwise alignment and scoring. Multiple sequence alignment. Fragment assembly, physical mapping of DNA. Phylogenetic trees. Molecular structure prediction and protein folding. Microarrays and microarray data, image comparison. Clustering. Overview of biological databases, PDB, MMDB, GenBank. Draft genomes and genome browsers. Pathway databases. May be taken for graduate credit. Prerequisites: CSci 144 and 153 or 212. (Spring) |
| 168 |
Biomedical Computing (3) |
Hahn and Staff |
| |
Computing issues in epidemiology and biosurveillance, decision support, medical imaging and visualization, image-guided surgery; medical databases, issues in system integration, mobile medical computing. May be taken for graduate credit. Prerequisite: CSci 143, 148; corequisite: CSci 146. (Spring) |
| 171 |
Concepts and Applications of Computer Graphics (3) |
Hahn and Staff |
| |
Introduction to computer graphics without programming; building 3-D geometry and rendering; computer animation; virtual reality and computer games; hands-on projects in modeling, rendering, and animation using commercial software; hands-on projects in photo and video manipulation. For students in majors other than computer science. (Spring) |
| 172 |
Computer Security (3) |
Vora and Staff |
| |
Risk analysis, cryptography, operating system security, identification and authentication systems, database security. Prerequisite: CSci 154; corequisite: CSci 183. (Fall) |
| 173 |
Continuous Algorithms (3) |
Simha and Staff |
| |
Overview of structures in continuous mathematics from a computational viewpoint. Main topics include continuous system simulation, computational modeling, probability, next-event simulation, algorithms for continuous optimization, machine learning, neural networks, statistical language processing, robot control algorithms. Prerequisite: CSci 123, 143. (Spring) |
| 174 |
Artificial Intelligence Algorithms (3) |
Price Jones and Staff |
| |
Knowledge representation and reasoning, propositional logic and predicate calculus. Logic programming. Search, game trees, backtracking. Planning. Prerequisite: CSci 145, 153. (Spring) |
| 175 |
Information Policy (3) |
Martin and Staff |
| |
Roles, issues, and impacts of computer-based information systems in national and international arenas, focusing on privacy, equity, freedom of speech, intellectual property, and access to personal and governmental information. Professional responsibilities, ethics, and common and best practices in information use. May be taken for graduate credit. (Fall) |
| 180 |
UNIX System Programming (3) |
Narahari and Staff |
| |
Exposure to UNIX internals. Use of UNIX system calls and utilities in conjunction with script and C programs. RFCs, GNU project, and other collaborative traditions in the UNIX community. May be taken for graduate credit. Prerequisite: Senior status or 1 year of C programming and UNIX user experience. (Fall) |
| 181 |
Design of Computer Animation I (3) |
Hahn and Staff |
| |
Use of commercial 3-D computer animation packages to create digital artistic works. Principles of animation, including timing, exaggeration of motion, and anticipation; use of a storyboard; modeling; motion; rendering and editing. Prerequisite: CSci 171. (Fall) |
| 182 |
Design of Computer Animation II (3) |
Hahn and Staff |
| |
Use of commercial 3-D animation packages to create artistic works and visualizations. Process-spanning concepts of development through pre-production, production, and post-production. Emphasis on developing original content and attaining high production values. Prerequisite: CSci 181. (Spring) |
| 183 |
Computer Networks I (3) |
Cheng and Staff |
| |
Higher-layer protocols and network applications on the Internet, such as session layer, presentation layer, data encryption, directory services and reliable transfer services, telnet, network management, network measurements, e-mail systems, and error reporting. Prerequisite: CSci 135, 143. (Fall) |
| 184 |
Computer Networks II (3) |
Cheng and Staff |
| |
Computer networks and open system standards. Network configurations and signals, encoding and modulation, transmission media, connection interfaces, error detection and correction, signal compression, switching, link layer control, ISDN, X.25, frame relay, ATM, and Sonet. Bridges, routers, and routing algorithms. Prerequisite: CSci 183. (Spring) |
| 185 |
Computer Graphics I (3) |
Hahn and Staff |
| |
Hardware; concepts of graphics subroutine packages; programming concepts for interaction, display, and data structuring; basic clipping and scan-conversion algorithms; homogeneous coordinates; three-dimensional viewing transforms; basic rendering. May be taken for graduate credit. Prerequisite: CSci 143 or 210. (Spring) |
| 186 |
Simulation Methods (3) |
Bock and Staff |
| |
Computational methods for continuous and discrete system simulation. Effects of computer software and hardware architectures on computational precision and accuracy requirements. Random-number generation and testing. Calibration and scaling technique. Verification and validation technique. Prerequisite: CSci 143. (Spring) |
| 187 |
Design of User—Interface Programs (3) |
Sibert and Staff |
| |
Structure of interactive programs. Widgets, windows, and input devices. Client—server model, event-driven programming, and callbacks. Window systems (e.g., Xwindows) and dialog control. May be taken for graduate credit. Prerequisite: CSci 143 or 210. (Spring) |
| 188 |
Software Design for Handheld Devices (3) |
Simha and Staff |
| |
Design of interactive software for handheld devices. Event driven programming, user interface design practices, memory management, handheld debugging techniques. May be taken for graduate credit. Prerequisite: CSci 143 or 210. (Spring) |
| 189 |
Unix System Administration (3) |
Narahari and Staff |
| |
System administration for the stand-alone system or small networks. Installation of two or more UNIX variants (Linux, FreeBSD, Solaris) on Intel or Sparc platforms. Configuration of mail, name services, and other network utilities. Backup and recovery, security and ethics. May be taken for graduate credit. Prerequisite: CSci 180. (Spring) |
| 190 |
Real-Time and Embedded Systems (3) |
Narahari and Staff |
| |
Development of software for real-time control of physical systems. Reliability and fault tolerance, exceptions and exception handling, reliability and concurrent processes, timeouts, deadline scheduling, shared-memory and message-based device drivers. May be taken for graduate credit. Prerequisite: CSci 143. (Spring) |
| 191 |
Computer Game Design and Programming (3) |
Hahn and Staff |
| |
Principles, techniques, and design of computer games. Graphic game engines, modeling, motion, AI and interaction; sound design and synthesis; real-time software and hardware issues. May be taken for graduate credit. (Fall) |
| 192 |
Network Security (3) |
Zhang and Staff |
| |
Security protocols and applications in local, global, and wireless networks; IPSec and packet-level communication security systems; network authentication and key-exchange protocols; intrusion detection systems and firewalls; secure network applications; network worms and denial-of-service attacks. Prerequisite: CSci 172. (Spring) |
| 193 |
Development of Open-Source Software (3) |
Staff |
| |
Design, process, tools, and culture of open-source software development. Cross-platform development and testing. Geographic dispersal, social and team dynamics, licenses (GPL, BSD, other); code reuse (modular code, shared libraries); very-large-scale distributed development techniques (CVS, Bugzilla, release-management, mailing-lists). May be taken for graduate credit. Prerequisite: CSci 143 or 210. (Fall) |
| 194 |
Discrete Analysis in Computer Science (3) |
Berkovich and Staff |
| |
Combinatorial theory: permutations and combinations, generating functions, recurrence relations, the principle of inclusion and exclusion. Block designs. Applications to the analysis of algorithms, computer organization, VLSI placement, coding theory, simulation, and other problems. May be taken for graduate credit. Prerequisite: CSci 123 or permission of instructor. (Fall) |
| 195—96 |
Capstone Design Project I—II (4—4) |
Burke and Staff |
| |
Planning, design, and construction of the project defined in CSci 165. Economic analysis of the product. Use of Gantt charts. Application of software engineering principles, including software requirements, specification, requirements engineering, reuse, documentation, verification and validation, testing, configuration management. Report writing and presentations. Prerequisite: CSci 165 and senior status. (Fall and spring) |
| 197 |
Special Topics (1 to 3) |
Staff |
| |
Topic to be announced in the Schedule of Classes. (Fall and spring) |
| 198 |
Research (1 to 3) |
Staff |
| |
Applied research and experimentation projects, as arranged. Prerequisite: junior or senior status. (Fall and spring) |