|
Professors S.Y. Berkovich, P.S. Bock, J.L. Sibert, R.S. Heller, C.D. Martin, H.-A. Choi, A. Youssef, B. Narahari, S. Muftic (Research), J.K. Hahn (Chair), R. Simha, R. Price Jones Associate Professors S. Rotenstreich, A. Bellaachia Assistant Professors J. Stanton, X. Cheng, P. Vora, L.D. Florea, M. Burke Adjunct Professor D.C. Roberts Professorial Lecturers T. Hanson, N. Brenner, G.J. Kowalski, S.H. Kaisler Associate Professorial Lecturers M. Happel, A. Panchenko Assistant Professorial Lecturers R.A. Fernandez, T. Bragg, M. Lancaster, G. Blankenship, D. Christian, S. Delahunty, D. Eisenreich, T. Grissom, K. Heckman, 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 or 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) |
| 41 |
Introduction to Computer Science (3) |
Narahari and Staff |
| |
A broad, nonprogramming survey of computing as a scientific discipline. History, hardware and software, key classical problems. Overview of bioinformatics, biomedical computing, computer security and information assurance, and digital media. (Fall) |
| 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) |
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 Vora and Staff and Information Assurance (3) |
| |
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) |
Narahari 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 41 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 I (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) |
Florea and Staff |
| |
Broad introduction to the field of bioinformatics. Overview of DNA/RNA, proteins, and the central dogma. Biological databases and searching. The new biology lab. Alignment tools. Protein structure and function. Overview of phylogenetics. May be taken for graduate credit. Prerequisite: BiSc 14. (Fall and 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) |
| 150 |
Foundations of Computing (3) |
Youssef and Staff |
| |
Ordering, formal grammars, finite-state machines, equivalence of machines, reduction, finite-state languages, acceptors, regular expressions, pushdown automata, context-free languages, Turing machines, computability. Prerequisite: CSci 135, 143. (Fall) |
| 151 |
Algorithms and Data Structures II (3) |
Simha and Staff |
| |
Advanced data structures (internal and external): hash tables, AVL trees, B-trees. Advanced algorithms: graph searches, shortest path, greedy method, divide and conquer, dynamic programming, backtracking. Introduction to NP-completeness. Prerequisite: CSci 123, 143. (Fall) |
| 156 |
Introduction to Operating Systems (3) |
Rotenstreich and Staff |
| |
Process management, process state, concurrent processing, synchronization, events. Operating system structure, the kernel approach, processor scheduling, task switching, monitors. System management, memory management, process loading, communication with peripherals. File systems. Interactive computation. Prerequisite: CSci 103 or 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, 150. (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 151. (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) |
| 166 |
Computational Biology (3) |
Florea 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 or 151 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 178. (Spring) |
| 169 |
Software Paradigms (3) |
Price Jones and Staff |
| |
The major paradigms of software design and their embodiment in programming languages. Object-oriented, procedural, scripting, functional, and concurrent software design paradigms and patterns. Prerequisite: CSci 143. (Fall) |
| 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 156; corequisite: CSci 183. (Fall) |
| 173 |
Introduction to Numerical Methods (3) |
Youssef and Staff |
| |
Numerical methods for solving simultaneous linear equations, roots of equations, eigenvalues and eigenvectors, numerical differentiation and integration, interpolation, solution of ordinary and partial differential equations, and curve fitting. May be taken for graduate credit. Prerequisite: ApSc 113, 115; CSci 133 or equivalent. (Fall) |
| 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 151, 169. (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) |
| 178 |
Database Systems I (3) |
Narahari and Staff |
| |
Design and architecture of relational database systems. Query language, data models, data structures to minimize access time, relational data structures. Construction of a database management system. Prerequisite: CSci 147. (Spring) |
| 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) |
Heller 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) |
Stanton 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) |
Stanton 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) |
Stanton and 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 |
Senior Computer Science Design Project I (3) |
Burke and Staff |
| |
Conception, planning, design, and construction of a one-year project. Economic analysis of the product. Use of Gantt charts. Lectures on presentation techniques, project construction, ethics, and professionalism. Five project report presentations, using visual aids. Formal written reports. Start of the construction. Prerequisite: CSci 178; and senior status. (Fall) |
| 196 |
Senior Computer Science Design Project II (3) |
Burke and Staff |
| |
Completion and demonstration of project started in CSci 195. Formal written reports, demonstrations, and oral presentations, using visual aids, of the progress of the project throughout the semester. Lectures on presentation techniques, ethics, project plans, testing procedures, user's manual, and user interfaces. Prerequisite: CSci 195. (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) |