A | B | C | D | E | F | G | H | |
---|---|---|---|---|---|---|---|---|
1 | Course | Prerequisite | Credits | Teacher | Program | When | Desc | |
2 | 6212 | Design and Analysis of Algorithms | 1311, 1112 | 3 | Youssef | grad | Fall and spring | Design and analysis of algorithms. Turing machines; NP-Complete theory. Algorithmic techniques: divide-and-conquer, greedy, dynamic programming, graph traversal, backtracking, and branch-and-bound. Applications include sorting and searching, graph algorithms, and optimization. Prerequisite: CSci 1311, 1112. (Fall and spring) |
3 | 6213 | Advanced Data Structures | 6212 | 3 | Berkovich | grad | Spring | Sparse matrix transpose and multiplication. List insertion and deletion, lists of available space. In-order, preorder, and postorder traversal of trees. Topological sorting. Binary search trees, including AVL trees, B-trees, and tries. Dynamic hashing. Prerequisite: CSci 6212. (Spring) |
4 | 6221 | Advanced Software Paradigms | 1311, 1112 | 3 | Bellaachia | grad | Fall and spring | Object-oriented, procedural, functional, and concurrent software design paradigms; design patterns; software life-cycle concepts. Tradeoffs between compiled and interpreted languages. Examples from Ada, Java, C, C++, and Perl. Prerequisite: CSci 1311, 1112. (Fall and spring) |
5 | 6231 | Software Engineering | 6221, 612 | 3 | Rotenstreich | grad | Spring | The life-cycle model. Requirements and specifications. Design models, structured and object-oriented design. Program development, PDL's tools, configuration control. Program, unit, and integration testing. Program verification. Other development models. Development metrics. Computer-aided software engineering (CASE). Prerequisite: CSci 6221, 6212. (Spring) |
6 | 6232 | Software Engineering Development | 6461, 6212 | 3 | Rotenstreich | grad | Fall | Formal methods in software engineering. First-order logic, basic specification elements, rigorous proofs, formal development process, concurrency. Prerequisite: CSci 6461, 6212. (Fall) |
7 | 6233 | Software Testing and Quality | 6231 | 3 | Rotenstreich | grad | Fall | Flow graphs and path testing, transaction flow testing, data flow testing, software metrics, system testing, test planning and documentation, reliability, statistical testing. Prerequisite: CSci 6231. (Fall) |
8 | 6234 | Object-Oriented Design | 6221 | 3 | Rotenstreich | grad | Spring | Object-oriented systems, software reusability, software modularity, top–down and bottom–up approaches, object classification, genericity, metaprogramming, concurrent object-oriented programming languages. Prerequisite: CSci 6221. (Spring) |
9 | 6235 | Component-Based Enterprise Software Development | 6221 | 3 | Rotenstreich | grad | Fall | Component-based software development for enterprise applications. Component models, multi-tier architecture. Specific case studies may include topics such as Enterprise Java Beans, DCOM, and COBRA. Prerequisite: CSci 6221. (Fall) |
10 | 6311 | Theory of Computation | 6221, 6212 | 3 | Narahari | grad | Theoretical foundations of computer science. Formal languages and automata; regular expressions, context-free languages, parsing; Turing machines and complexity; partial recursive functions; undecidability; program correctness; fixed-point theory; formal specifications of software. Prerequisite: CSci 6221, 6212. | |
11 | 6312 | Graph Theory and Applications | 6212 | 3 | Choi | grad | Spring, even years | Undirected and directed graphs. Connectivity, partitions, cycles and matchings. Edge and vertex coloring, chromatic polynomials, and the four-coloring problem. Planar graphs and Kuratowski's theorem. Properties of random graphs. Applications to a variety of problems. Prerequisite: CSci 6212. (Spring, even years) |
12 | 6313 | Advanced Discrete Structures | 1311, 1232 | 3 | Youssef | grad | Fall | 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. Prerequisites: CSci 1311 and Math 1232. (Fall) |
13 | 6318 | Complex Systems | 6212 | 3 | Simha | grad | On demand | The edge-of-chaos phenomenon, phase transitions, power laws, small-world networks, Boolean networks, cellular automata, and complex dynamics. Applications to networks and biological systems. Prerequisite: CSci 6212. (On demand) |
14 | 6331 | Cryptography | 6212 | 3 | Vora | grad | Spring | Review of mathematical theory for cryptography. Classical ciphers. Modern block and stream ciphers. Symmetric and asymmetric systems. Digital signatures. Public key infrastructure. Authentication. Prerequisite: CSci 6212. (Spring) |
15 | 6341 | Continuous Algorithms | 1311, 2113 | 3 | Simha | grad | Spring | f |
16 | 6343 | Numerical Solutions of Algebraic Systems | 6212 | 3 | Berkovich | grad | Fall, even years | Numerical solutions of linear algebraic equations and the algebraic eigenvalue problem. Sparse matrix techniques. Solutions of nonlinear simultaneous equations. Interpolation and extrapolation. Prerequisite: CSci 6212. (Fall, even years) |
17 | 6351 | Data Compression | 6212 | 3 | Youssef | grad | Fall | Background on signals, information theory, transforms, human vision, and metrics. Lossless and lossy compression techniques. Video compression. Compression standards. Progressive transmission. Prerequisite: CSci 6212. (Fall) |
18 | 6421 | Distributed and Cluster Computing | 6461 | 3 | Parmer | grad | Fall, odd years | Overview of network programming. Interconnection networks and system architecture for clusters. Cluster design, benchmarking, management, and configuration. Distributed computing on the web and grids. Distributed naming, location, authentication, and high availability. Programming high-performance clusters. Prerequisite: CSci 6461. (Fall, odd years) |
19 | 6431 | Computer Networks | 6461 | 3 | Cheng | grad | Fall | Fundamental concepts in the design and implementation of computer communication networks and internet, their protocols, and applications. Layered network architectures, applications, network programming interfaces, transport, routing, data link protocols, local area networks, network management, and network security. Prerequisite: CSci 6461. (Fall) |
20 | 6433 | Internet Protocols | 6221, 6431 | 3 | Cheng | grad | Fall | Understanding of the layered protocols for the Internet. Interconnection of networks. The IP protocol and routing algorithms, switches, bridges, and routers. The transmission control protocol (TCP). Addressing and names. Application-specific protocols, FTP, TELNET, SMTP, SNMP, HTTP. Domain name services. Prerequisite: CSci 6221, 6431. (Fall) |
21 | 6434 | Design of Internet Protocols | 6212, 6433 | 3 | Cheng | grad | Protocol specifications and formal description methods. Finite-state descriptions of Internet protocols. Specification and Description Language. Implementation of protocol specifications. Prerequisite: CSci 6212, 6433. | |
22 | 6441 | Database Management Systems | 6221, 6461 | 3 | Narahari | grad | Fall | Design and architecture of relational database management systems; query languages, data models, index structures, database application design. Prerequisite: CSci 6221, 6461, or equivalent. (Fall) |
23 | 6442 | Database Systems | 6441 | 3 | Narahari | grad | Spring | Concepts in database systems. Relational database design. Editing, report generation, updating, schema refinement, tuning. Construction of database management systems. Conceptual and logical design of a database. Prerequisite: CSci 6441. (Spring) |
24 | 6443 | Data Mining | 6441 | 3 | Bellaachia | grad | Spring | Fundamental concepts of data mining. Algorithm techniques for data mining, including classification, clustering, association rules mining. Prerequisite: CSci 6441 or equivalent or permission of instructor. (Spring) |
25 | 6448 | Scientific Databases and Knowledge Formation | 1311, 1132, 1112 | 3 | Berkovich | grad | Spring | Database management and information retrieval. Relational algebra and SQL query language. Advanced retrieval capabilities. Data mining. Rules of inductive inference. Classification, clustering, and machine learning techniques. Confronting the problems of complexity. Prerequisite: CSci 1311 and either CSci 1132 or 1112. (Spring) |
26 | 6451 | Information Retrieval Systems | 6221, 6461 | 3 | Berkovich | grad | Spring | Information organization and retrieval of natural language data by digital computer systems; statistical, syntactic, and logical analysis of natural language; dictionary and thesaurus systems; searching strategies and cataloging. Large-scale file structures. Prerequisite: CSci 6221, 6461. (Spring) |
27 | 6461 | Computer Architectures | 1311, 1112, 2461 | 3 | Narahari | grad | Fall and spring | Concepts in processor, system, and network architectures; architecture of pipeline, superscalar, and VLIW/EPIC processors; multiprocessors and interconnection networks. Cache coherence and memory subsystem design for multiprocessor architectures. Parallel and distributed system architecture; internetworking. Prerequisite: CSci 1311, 1112, 2461. (Fall and spring) |
28 | 6511 | Artificial Intelligence | 4511, 6212 | 3 | Bock | grad | Fall | Representation and space search. Heuristic search. Predicate calculus. Knowledge representation and knowledge engineering for expert systems. Rule-based, hybrid, and O-O systems. Semantic nets, frames, and natural language. Theorem provers. Overview of planning, learning, neural nets. Use of AI languages. Prerequisite: CSci 4511, 6212. (Fall) |
29 | 6512 | Adaptive Learning Systems I | 1311, 1112, 2461 | 3 | Bock | grad | Fall | Learning as an alternative to rule-based schemes for artificial intelligence. Deterministic and probabilistic simulation of games. Markovian and bounded-context systems. The algedonic process. Introduction to collective learning systems theory. Design, simulation, and evaluation of collective learning automata. Prerequisite: CSci 4511, 6212. (Fall) |
30 | 6515 | Natural Language Understanding | 4511, 6212 | 3 | Bock | grad | Fall, odd years | The state of the art of natural language parsing and semantic understanding by computer systems. Review of formal, context-free, and transformational grammars and parsing. Augmented transition networks: problems of complexity, semantics, and context. Deterministic parsing and semantic parsing. Prerequisite: CSci 6511. (Fall, odd years) |
31 | 6519 | Models of Cognition | 4511, 6212 | 3 | Bock | grad | Spring, odd years | The central nervous system as a natural precedent for AI: structure and function of the neuron and neural networks; sensors and actuators; modular brain function. The cognitive process. Intelligence metrics. Genetics and self-organizing systems. Memory mechanisms. The psychological basis of learning and behavior. Prerequisite: CSci 4511, 6212. (Spring, odd years) |
32 | 6531 | Computer Security | 6461 | 3 | Vora | grad | Fall | Functional description of cryptographic primitives. Risk analysis. Policy models: security, confidentiality, integrity, hybrid. Design principles: access control, information flow, confinement. Assurance: formal methods, evaluation. Malicious logic: security effects of programming languages. Prerequisite: CSci 6461. (Fall) |
33 | 6534 | Information Security in Government | 3 | Heller | grad | Fall and spring | Information assurance policies and standards in the federal government as mandated by legislation; security processes following NIST standards; technical tests and validation methods used in the federal government; review of federal threats and vulnerabilities; and government positions in information assurance. (Fall and spring) | |
34 | 6541 | Network Security | 6531 | 3 | Zhang | grad | Spring | 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 6531. (Spring) |
35 | 6542 | Computer Network Defense | 6541 | 3 | Narahari | grad | Offensive and defensive information warfare operations. Simulation of various attacks on and defenses of computer systems. Laws related to information warfare. History and literature related to information warfare attacks. Prerequisite: CSci 6541. | |
36 | 6547 | Wireless and Mobile Security | 6431, 6531 | 3 | Cheng | grad | Mobile Agents, Wireless Web, WAP, WEP, Peer-to-Peer Computing; secure routing; intrusion detection and authentication on wireless networks; security for handheld devices; encryption and cryptographic measures for wireless; real-time wireless security; security measures for embedded devices. Prerequisite: CSci 6431, 6531. | |
37 | 6548 | E-commerce Security | 6541 | 3 | grad | Fall | Advanced technical topics in e-commerce security. X.500 registration systems, X.509/PKIX certification systems, secure payment methods, smart cards, authorization models in open distributed environments. Secure web systems, technologies, and applications. Prerequisite: CSci 6541. (Fall) | |
38 | 6554 | Computer Graphics II | 4554 | 3 | Hahn | grad | Spring | Curves and surfaces. Spatial sampling and aliasing. Visible surface algorithms. Illumination and shading models, raytracing and radiosity. Image manipulation and texture mapping. Procedural models. Prerequisite: CSci 4554. (Spring) |
39 | 6555 | Computer Animation | 4554 | 3 | Hahn | grad | Fall | Euler angles and quaternions; articulated figure motion; forward and inverse kinematics; kinematic, physics based, and behavioral motion control; rendering problems (temporal aliasing); sound synthesis and synchronization; recording and editing techniques. Prerequisite: CSci 4554 or permission of instructor. (Fall) |
40 | 6561 | Design of Human-Computer Interface | 6221 | 3 | Sibert | grad | Spring | Design of dialogues for interactive systems. Psychological, physiological, linguistic, and perceptual factors. Advantages and disadvantages of various interaction techniques, command language syntaxes, and data presentations. Design methodology and guidelines. Case studies, research readings, and projects. Prerequisite: CSci 6221. (Spring) |
41 | 6562 | Design of Interactive Multimedia | 6221 | 3 | Heller | grad | Fall | History, theory, and development of multimedia concepts. Hardware components, platforms, and authoring tools. Scientific, technical, and cognitive foundations of various media including text, sound, graphics, and video. Interface design. Use of a media taxonomy as a design and evaluation tool. Completion of a multimedia portfolio required. Prerequisite: CSci 6221. (Fall) |
42 | 6572 | Computational Biology Algorithms | 6212 | 3 | Price Jones | grad | Spring | Algorithms and models for DNA and protein sequence alignments, gene finding, identification of gene regulatory regions, sequence evolution and phylogenetics, RNA and protein structure, microarray and/or proteomics data analysis. Prerequisite: CSci 6212 or equivalent; programming experience in C/C++ or Java. (Spring) |
43 | 6900 | Colloquium | 0 | grad | Fall and spring | Lectures by outstanding authorities in computer science. Topics to be announced each semester. (Fall and spring) | ||
44 | 6907 | Special Topics | 1 to 3 | grad | Fall and spring | Topics to be announced in the Schedule of Classes. (Fall and spring) | ||
45 | 6908 | Research | arr. | grad | Applied research and experimentation projects, as arranged. May be repeated for credit. | |||
46 | 8211 | Advanced Topics in Algorithms | 6212 | 3 | grad | |||
47 | 8231 | Advanced Topics in Software Engineering | 6232, 6233 | 3 | grad | |||
48 | 8331 | Advanced Cryptography | 6331 | 3 | Choi | grad | Spring, odd years | Graph algorithms, strongly connected components, biconnected components, dominators in acyclic graphs, ordered trees, network flow, planarity testing, bipartite matching, theory of NP completeness, NP-complete problems. Design and analysis of approximation algorithms for NP-complete problems. Prerequisite: CSci 6212. (Spring, odd years) |
49 | 8401 | Advanced Topics in Systems | 3 | Rotenstreich | grad | Spring, even years | Seminar on current research and developments in software engineering. Students develop a software package with the aid of available software tools such as requirement tool, design tool, code generators, testing tools, measurement tools, cost estimation tools. Prerequisite: CSci 6232, 6233. (Fall, even years) | |
50 | 8431 | Advanced Topics in Computer Networks and Networked Computing | 3 | Vora | grad | Fall | Linear and differential cryptanalysis. Cryptanalysis of AES. Factorization and primality. Computational and information-theoretic secrecy. Theory of secrecy. Zero-knowledge proofs. Secret sharing. Cooperative distributed cryptography. Provable security. Prerequisite: CSci 6331. (Fall) | |
51 | 8440 | Advanced Topics in Data Management | 6461, 6212, 6433 | 3 | Rotenstreich | grad | Spring, even years | Seminar on current research and developments in computer operating systems. May be repeated for credit. (Spring, even years) |
52 | 8511 | Advanced Topics in Artificial Intelligence | 6442, 6451 | 3 | Simha | grad | Fall, odd years | Seminar on current research and developments in computer networks, Internet, networked computing, mobile computing and pervasive computing. May be repeated for credit. Prerequisites: CSci 6461, 6212, 6433. (Fall, odd years) |
53 | 8531 | Advanced Topics in Security | 6531 | 3 | Berkovich | grad | Fall, odd years | Seminar on current research and developments in computer database systems and information retrieval. May be repeated for credit. Prerequisite: CSci 6442 or 6451. (Fall, odd years) |
54 | 8554 | Advanced Topics in Computer Graphics | 6554 | 3 | Bock | grad | Fall, even years | Seminar on current research and developments in machine intelligence and cognitive science. May be repeated for credit. Prerequisite: Permission of the instructor. (Fall, even years) |
55 | 8900 | Advanced Selected Topics | 3 | Vora | grad | Spring, even years | Seminar on current research and developments in information assurance. May be repeated for credit. Prerequisite: CSci 6531. (Spring, even years) | |
56 | 8901 | Research and Evaluation Methods | 3115 | 3 | Hahn | grad | Fall, even years | Seminar on current research and developments in computer graphics. Spatial and temporal anti-aliasing: hidden-surface algorithms: illumination models, radiosity, textural mapping. May be repeated for credit. Prerequisite: CSci 6554. (Fall, even years) |
57 | 8998 | Computer Science Research | arr. | grad | Topics announced in the Schedule of Classes. | |||
58 | 8999 | Dissertation Research | arr. | Bock | grad | Fall | Required for all computer science doctoral candidates. The scientific method; research/design requirements and objectives: qualitative, quantitative, and case studies; performance metrics; design procedures and control; sources of error and bias; evaluation tools; formal validation methods; documentation standards. Prerequisite: ApSc 3115. (Fall) | |
59 | 6998 | Thesis Research | 3 | grad | Limited to students preparing for the Doctor of Philosophy qualifying examination. May be repeated for credit. | |||
60 | 6999 | Thesis Research II | 3 | grad | Limited to Doctor of Philosophy candidates. May be repeated for credit. | |||
61 | 1010 | Computer Science Orientation | 1 | Narahari | ugrad | 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) | ||
62 | 1011 | Introduction to Programming with Java | 3 | Simha | ugrad | 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) | ||
63 | 1020 | Applications Software | 3 | Heller | ugrad | 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) | ||
64 | 1021 | Introduction to Computers and the Internet | 3 | ugrad | 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) | |||
65 | 1022 | Introduction to Internet Technology | 3 | Heller | ugrad | 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) | ||
66 | 1023 | Introduction to Web Software Development | 3 | ugrad | 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) | |||
67 | 1030 | Technology and Society | 3 | ugrad | 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) | |||
68 | 1041 | Introduction to FORTRAN Programming | or corequisite: Math 1220 or 1231. | 3 | ugrad | Spring | 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) | |
69 | 1111 | Introduction to Software Development | 3 | Price Jones | ugrad | 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) | ||
70 | 1112 | Algorithms and Data Structures | CSci 1111. | 3 | Price Jones | ugrad | Spring | 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) |
71 | 1121 | Introduction to C Programming | 3 | ugrad | 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) | |||
72 | 1131 | Introduction to Programming with C++ | Math 1232 or equivalent. | 3 | ugrad | Fall | 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) | |
73 | 1132 | Data Structures and Software Design | CSci 1121. | 3 | Youssef | ugrad | Fall | 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) |
74 | 1311 | Discrete Structures I | CSci 1010 or 1121; Math 1220 or 1231. | 3 | Youssef | ugrad | Fall and spring | 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) |
75 | 2113 | Software Engineering I | CSci 1112. | 3 | Simha | ugrad | Fall | Programming techniques and software development in one or more programming languages. Application development with GUIs, database access, threads, Web programming. Prerequisite: CSci 1112. (Fall) |
76 | 2312 | Discrete Structures II | CSci 1311 and Math 1231. | 3 | Youssef | ugrad | Fall | 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) |
77 | 2441 | Database Systems and Team Projects | 3 | Narahari | ugrad | 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) | ||
78 | 2461 | Computer Architecture I | CSci 1112; corequisite: CSci 2113. | 4 | Narahari | ugrad | Fall | 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) |
79 | 3212 | Algorithms | CSci 1311, 2113. | 3 | Simha | ugrad | Fall | 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) |
80 | 3221 | Programming Languages | CSci 2113. | 3 | Price Jones | ugrad | Spring | 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) |
81 | 3240 | Pre-Capstone Design Project | CSci3313, 3212, 3411. | 1 | Simha, Parmer | ugrad | Fall and spring | 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: CSci3313, 3212, 3411. (Fall and spring) |
82 | 3313 | Foundations of Computing | CSci 2461, 2113. | 4 | Choi | ugrad | Fall | 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) |
83 | 3411 | Operating Systems | CSci 2461, 2113. | 4 | Parmer | ugrad | Fall | 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) |
84 | 3462 | Computer Architecture II | CSci 2461, 2113. | 3 | Narahari | ugrad | Spring | 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) |
85 | 3571 | Introduction to Bioinformatics | 3 | Price Jones | ugrad | Same as BiSc 2584. | ||
86 | 3907 | Special Topics | 3 | ugrad | Topic to be announced in the Schedule of Classes. (Fall and spring) | |||
87 | 3908 | Research | junior or senior status. | 3 | ugrad | Fall and spring | Applied research and experimentation projects, as arranged. Prerequisite: junior or senior status. (Fall and spring) | |
88 | 4222 | Theory of Computer Translators | CSci 3462, 3313. | 3 | Choi | ugrad | Spring | 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) |
89 | 4235 | Development of Open-Source Software | CSci2113 or 6221. | 3 | ugrad | Fall | 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: CSci2113 or 6221. (Fall) | |
90 | 4237 | Software Design for Handheld Devices | CSci 2113 or 6221. | 3 | Simha | ugrad | Spring | 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) |
91 | 4314 | Discrete Analysis | CSci 1311 or permission of instructor. | 3 | Berkovich | ugrad | Fall | 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) |
92 | 4331 | Cryptography | CSci 2312, 3313, 3212. | 3 | Vora | ugrad | Spring | 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) |
93 | 4341 | Continuous Algorithms | CSci 1311, 2113. | 3 | Simha | ugrad | Spring | 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) |
94 | 4361 | Simulation Methods | CSci 2113. | 3 | ugrad | Spring | 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) | |
95 | 4415 | Real-Time and Embedded Systems | CSci 2113. | 3 | Narahari | ugrad | Spring | 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) |
96 | 4417 | UNIX System Programming | Senior status or 1 year of C programming and UNIX user experience. | 3 | Narahari | ugrad | Fall | 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) |
97 | 4418 | Unix System Administration | CSci4417. | 3 | Narahari | ugrad | Spring | 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: CSci4417. (Spring) |
98 | 4431 | Computer Networks I | CSci 2461, 2113. | 3 | Cheng | ugrad | Fall | 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) |
99 | 4432 | Computer Networks II | CSci 4431. | 3 | Cheng | ugrad | Spring | 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) |
100 | 4455 | Computer Game Design and Programming | 3 | Hahn | ugrad | 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) |