COMPUTER SCIENCE
Professors S.Y. Berkovich, R.S. Heller, H.-A. Choi, A. Youssef (Chair), B. Narahari, J.K. Hahn, R. Simha, R. Price Jones
Associate Professors S. Rotenstreich, A. Bellaachia, X. Cheng, P. Vora
Assistant Professors N. Zhang, G.A. Parmer, E. Drumwright, M. Clarkson, C. Monteleoni, H. Wee, T. Wood, G. Sibley
Professorial Lecturers D.C. Roberts, N. Brenner, G.J. Kowalski, S.H. Kaisler, M. Happel, R.A. Fernandez, M. Lancaster, G. Blankenship, D. Christian, S. Delahunty, D. Eisenreich, 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 1010, CSci courses numbered 1041 and below may not normally be counted toward degree requirements for computer science majors, unless approved by a department advisor. Credit may be earned for only one course in each of the following pairs of courses: CSci 2441/ 6441, 4331/ 6331, 4531/ 6531, 4341/ 6341, 4431/ 6431, 4531/ 6531, 4532/ 6532, 4541/ 6541, 4532/ 6532.
| 1010 |
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) |
| 1011 |
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, GUI widgets, containers, and exceptions. (Spring) |
| 1020 |
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) |
| 1021 |
Introduction to Computers and the Internet (3) |
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) |
| 1022 |
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) |
| 1023 |
Introduction to Web Software Development (3) |
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) |
| 1030 |
Technology and Society (3) |
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) |
| 1041 |
Introduction to FORTRAN Programming (3) |
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 1220 or 1231. (Spring) |
| 1111 |
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) |
| 1112 |
Algorithms and Data Structures (3) |
Price Jones and Staff |
| |
Object-oriented software. Inheritance, exceptions, development of classes, 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 1111. (Spring) |
| 1121 |
Introduction to C Programming (3) |
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 1220 or 1231. (Spring) |
| 1131 |
Introduction to Programming with C++ (3) |
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 1232 or equivalent. (Fall) |
| 1132 |
Data Structures and Software Design (3) |
Youssef and Staff |
| |
Data structures such as trees, lists, stacks, queues, and strings. Big-O notation and introduction to algorithm performance analysis. Solutions of numerical and non-numerical problems. Use of I/O libraries. Application development and software testing. Prerequisite: CSci 1121. (Fall) |
| 1311 |
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 1010 or 1121; Math 1220 or 1231. (Fall and spring) |
| 2113 |
Software Engineering (3) |
Simha and Staff |
| |
Programming techniques and software development in one or more programming languages. Application development with GUIs, database access, threads, Web programming. Prerequisite: CSci 1112. (Fall) |
| 2312 |
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 1311 and Math 1231. (Fall) |
| 2441 |
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, privacy, software copyrights. Corequisite: CSci 2113. (Spring) |
| 2461 |
Computer Architecture I (3) |
Narahari and Staff |
| |
Number representation, computer arithmetic, digital logic and circuit design. Computer organization, micro-architecture and processor datapath, assembly and machine language programming. Introduction to memory organization and the hardware-software interface. Implementation of high-level language constructs. Prerequisite: CSci 1112; corequisite: CSci 2113. (Fall) |
| 3212 |
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. Combinatorial optimization techniques. NP-completeness. Prerequisite: CSci 1311, 2113. (Fall) |
| 3221 |
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 2113. (Spring) |
| 3240 |
Pre-Capstone Design Project (1) |
Simha, Parmer, 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 3313, 3212, 3411. (Fall and spring) |
| 3313 |
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. Compiler construction. Lexical and syntax analysis; parsing and parsing techniques; lexical and parsing tools. Prerequisite: CSci 2461, 2113. (Fall) |
| 3411 |
Operating Systems (4) |
Parmer 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. Socket programming, packets, Internet protocols. Prerequisite: CSci 2461, 2113. (Fall) |
| 3462 |
Computer Architecture II (3) |
Narahari and Staff |
| |
Computer organization. Design of computer components and of a simple computer. Instruction set and assembly language of a pipelined RISC processor. Introduction to high-performance processors. Design of cache, main memory, and virtual memory systems. Program performance models and system performance. The I/O structure and peripherals. Prerequisite: CSci 2461, 2113. (Spring) |
| 3571 |
Introduction to Bioinformatics (3) |
Price Jones and Staff |
| |
Same as BiSc 2584. |
| 3907 |
Special Topics (1 to 3) |
Staff |
| |
Topic to be announced in the Schedule of Classes. (Fall and spring) |
| 3908 |
Research (1 to 3) |
Staff |
| |
Applied research and experimentation projects, as arranged. Prerequisite: junior or senior status. (Fall and spring) |
| 4222 |
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 3462, 3313. (Spring) |
| 4235 |
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 2113 or 6221. (Fall) |
| 4237 |
Software Design for Handheld Devices (3) |
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 2113 or 6221. (Spring) |
| 4243-44 |
Capstone Design Project I-II (4-4) |
Simha, Parmer, and Staff |
| |
Planning, design, and construction of the project defined in CSci 3240. Economic analysis of the project. Application of software engineering principles, including software requirements, specification, requirements engineering, reuse, documentation, verification/validation, testing, configuration management. Report writing and presentations. Prerequisite: senior status. (Fall and spring) |
| 4314 |
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 1311 or permission of instructor. (Fall) |
| 4331 |
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 2312, 3313, 3212. (Spring) |
| 4341 |
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, statistical techniques, next-event simulation, algorithms for continuous optimization, machine learning, neural networks, statistical language processing, robot control algorithms. Prerequisite: CSci 1311, 2113. (Spring) |
| 4361 |
Simulation Methods (3) |
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. May be taken for graduate credit. Prerequisite: CSci 2113. (Spring) |
| 4415 |
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 2113. (Spring) |
| 4417 |
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) |
| 4418 |
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 4417. (Spring) |
| 4431 |
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 2461, 2113. (Fall) |
| 4432 |
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 4431. (Spring) |
| 4455 |
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) |
| 4511 |
Artificial Intelligence Algorithms (3) |
Price Jones and Staff |
| |
Knowledge representation and reasoning, propositional logic and predicate calculus. Logic programming. Search, game trees, backtracking. Planning. May be taken for graduate credit. Prerequisite: CSci 3221, 3212. (Spring) |
| 4531 |
Computer Security (3) |
Vora and Staff |
| |
Risk analysis, cryptography, operating system security, identification and authentication systems, database security. Prerequisite: CSci 3411; corequisite: CSci 4431. (Fall) |
| 4532 |
Information Policy (3) |
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. (Fall) |
| 4541 |
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 4531. (Spring) |
| 4551 |
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.(Spring) |
| 4552 |
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 4551. (Fall) |
| 4553 |
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 4552. (Spring) |
| 4554 |
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 2113 or 6221. (Spring) |
| 4561 |
Design of User-Interface Programs (3) |
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 2113 or 6221. (Spring) |
| 4572 |
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. Prerequisite: CSci 3571 and 3212 or 6212. (Spring) |
| 4576 |
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) |
| 4577 |
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 2113, 4576; corequisite: CSci 2441. (Spring) |
|