GWU CS Classes
The version of the browser you are using is no longer supported. Please upgrade to a supported browser.Dismiss

View only
6212Design and Analysis of Algorithms1311, 11123Youssef gradFall and springDesign 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)
6213Advanced Data Structures62123Berkovich gradSpringSparse 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)
6221Advanced Software Paradigms1311, 11123Bellaachia gradFall and springObject-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)
6231Software Engineering6221, 612 3Rotenstreich gradSpringThe 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)
6232Software Engineering Development6461, 62123Rotenstreich gradFallFormal methods in software engineering. First-order logic, basic specification elements, rigorous proofs, formal development process, concurrency. Prerequisite: CSci 6461, 6212. (Fall)
6233Software Testing and Quality62313Rotenstreich gradFallFlow 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)
6234Object-Oriented Design62213Rotenstreich gradSpringObject-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)
6235Component-Based Enterprise Software Development 62213Rotenstreich gradFallComponent-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)
6311Theory of Computation6221, 62123Narahari gradTheoretical 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.
6312Graph Theory and Applications62123Choi gradSpring, even yearsUndirected 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)
6313Advanced Discrete Structures1311, 12323Youssef gradFallDiscrete 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)
6318Complex Systems62123Simha gradOn demandThe 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)
6331Cryptography62123Vora gradSpringReview 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)
6341Continuous Algorithms1311, 21133Simha gradSpringf
6343Numerical Solutions of Algebraic Systems62123Berkovich gradFall, even yearsNumerical 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)
6351Data Compression62123Youssef gradFallBackground on signals, information theory, transforms, human vision, and metrics. Lossless and lossy compression techniques. Video compression. Compression standards. Progressive transmission. Prerequisite: CSci 6212. (Fall)
6421Distributed and Cluster Computing64613Parmer gradFall, odd yearsOverview 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)
6431Computer Networks64613Cheng gradFallFundamental 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)
6433Internet Protocols6221, 64313Cheng gradFallUnderstanding 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)
6434Design of Internet Protocols6212, 64333Cheng gradProtocol specifications and formal description methods. Finite-state descriptions of Internet protocols. Specification and Description Language. Implementation of protocol specifications. Prerequisite: CSci 6212, 6433.
6441Database Management Systems6221, 64613Narahari gradFallDesign and architecture of relational database management systems; query languages, data models, index structures, database application design. Prerequisite: CSci 6221, 6461, or equivalent. (Fall)
6442Database Systems64413Narahari gradSpringConcepts 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)
6443Data Mining64413Bellaachia gradSpringFundamental 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)
6448Scientific Databases and Knowledge Formation1311, 1132, 11123Berkovich gradSpringDatabase 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)
6451Information Retrieval Systems6221, 64613Berkovich gradSpringInformation 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)
6461Computer Architectures1311, 1112, 24613Narahari gradFall and springConcepts 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)
6511Artificial Intelligence4511, 62123Bock gradFallRepresentation 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)
6512Adaptive Learning Systems I1311, 1112, 24613Bock gradFallLearning 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)
6515Natural Language Understanding4511, 62123Bock gradFall, odd yearsThe 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)
6519Models of Cognition4511, 62123Bock gradSpring, odd yearsThe 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)
6531Computer Security 64613Vora gradFallFunctional 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)
6534Information Security in Government3Heller gradFall and springInformation 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)
6541Network Security 65313Zhang gradSpringSecurity 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)
6542Computer Network Defense65413Narahari gradOffensive 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.
6547Wireless and Mobile Security6431, 65313Cheng gradMobile 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.
6548E-commerce Security65413gradFallAdvanced 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)
6554Computer Graphics II45543Hahn gradSpringCurves 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)
6555Computer Animation 45543Hahn gradFallEuler 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)
6561Design of Human-Computer Interface62213Sibert gradSpringDesign 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)
6562Design of Interactive Multimedia 62213Heller gradFallHistory, 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)
6572Computational Biology Algorithms62123Price Jones gradSpringAlgorithms 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)
6900Colloquium0gradFall and springLectures by outstanding authorities in computer science. Topics to be announced each semester. (Fall and spring)
6907Special Topics1 to 3gradFall and springTopics to be announced in the Schedule of Classes. (Fall and spring)
6908Researcharr.gradApplied research and experimentation projects, as arranged. May be repeated for credit.
8211Advanced Topics in Algorithms 62123grad
8231Advanced Topics in Software Engineering6232, 62333grad
8331Advanced Cryptography63313Choi gradSpring, odd yearsGraph 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)
8401Advanced Topics in Systems3Rotenstreich gradSpring, even yearsSeminar 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)
8431Advanced Topics in Computer Networks and Networked Computing3Vora gradFallLinear 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)
8440Advanced Topics in Data Management 6461, 6212, 64333Rotenstreich gradSpring, even yearsSeminar on current research and developments in computer operating systems. May be repeated for credit. (Spring, even years)
8511Advanced Topics in Artificial Intelligence6442, 64513Simha gradFall, odd yearsSeminar 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)
8531Advanced Topics in Security65313Berkovich gradFall, odd yearsSeminar 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)
8554Advanced Topics in Computer Graphics65543Bock gradFall, even yearsSeminar on current research and developments in machine intelligence and cognitive science. May be repeated for credit. Prerequisite: Permission of the instructor. (Fall, even years)
8900Advanced Selected Topics3Vora gradSpring, even yearsSeminar on current research and developments in information assurance. May be repeated for credit. Prerequisite: CSci 6531. (Spring, even years)
8901Research and Evaluation Methods31153Hahn gradFall, even yearsSeminar 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)
8998Computer Science Researcharr.gradTopics announced in the Schedule of Classes.
8999Dissertation Researcharr.Bock gradFallRequired 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)
6998Thesis Research 3gradLimited to students preparing for the Doctor of Philosophy qualifying examination. May be repeated for credit.
6999Thesis Research II 3gradLimited to Doctor of Philosophy candidates. May be repeated for credit.
1010Computer Science Orientation1Narahari ugradIntroduction 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)
1011Introduction to Programming with Java 3Simha ugradAn 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)
1020Applications Software 3Heller ugradIntroduction 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)
1021Introduction to Computers and the Internet 3ugradSurvey 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)
1022Introduction to Internet Technology 3Heller ugradAn 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)
1023Introduction to Web Software Development 3ugradIntroduction 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)
1030Technology and Society 3ugradHistorical, 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)
1041Introduction to FORTRAN Programming or corequisite: Math 1220 or 1231. 3ugradSpringStructured 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)
1111Introduction to Software Development 3Price Jones ugradIntroduction 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)
1112Algorithms and Data Structures CSci 1111. 3Price Jones ugradSpringObject-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)
1121Introduction to C Programming 3ugradStructured 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)
1131Introduction to Programming with C++ Math 1232 or equivalent. 3ugradFallIntensive 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)
1132Data Structures and Software Design CSci 1121. 3Youssef ugradFallData 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)
1311Discrete Structures I CSci 1010 or 1121; Math 1220 or 1231. 3Youssef ugradFall and springMathematics 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)
2113Software Engineering I CSci 1112. 3Simha ugradFallProgramming techniques and software development in one or more programming languages. Application development with GUIs, database access, threads, Web programming. Prerequisite: CSci 1112. (Fall)
2312Discrete Structures II CSci 1311 and Math 1231. 3Youssef ugradFallBasic 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)
2441Database Systems and Team Projects 3Narahari ugradDesign 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)
2461Computer Architecture I CSci 1112; corequisite: CSci 2113. 4Narahari ugradFallNumber 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)
3212Algorithms CSci 1311, 2113. 3Simha ugradFallCore 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)
3221Programming Languages CSci 2113. 3Price Jones ugradSpringProgramming 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)
3240Pre-Capstone Design Project CSci3313, 3212, 3411. 1Simha, ParmerugradFall and springThe 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)
3313Foundations of Computing CSci 2461, 2113. 4Choi ugradFallTheoretical 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)
3411Operating Systems CSci 2461, 2113. 4Parmer ugradFallProcess 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)
3462Computer Architecture II CSci 2461, 2113. 3Narahari ugradSpringComputer 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)
3571Introduction to Bioinformatics 3Price Jones ugradSame as BiSc 2584.
3907Special Topics 3ugradTopic to be announced in the Schedule of Classes. (Fall and spring)
3908Research junior or senior status. 3ugradFall and springApplied research and experimentation projects, as arranged. Prerequisite: junior or senior status. (Fall and spring)
4222Theory of Computer Translators CSci 3462, 3313. 3Choi ugradSpringLexical 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)
4235Development of Open-Source Software CSci2113 or 6221. 3ugradFallDesign, 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)
4237Software Design for Handheld Devices CSci 2113 or 6221. 3Simha ugradSpringDesign 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)
4314Discrete Analysis CSci 1311 or permission of instructor. 3Berkovich ugradFallCombinatorial 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)
4331Cryptography CSci 2312, 3313, 3212. 3Vora ugradSpringAlgorithmic 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)
4341Continuous Algorithms CSci 1311, 2113. 3Simha ugradSpringOverview 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)
4361Simulation Methods CSci 2113. 3ugradSpringComputational 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)
4415Real-Time and Embedded Systems CSci 2113. 3Narahari ugradSpringDevelopment 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)
4417UNIX System Programming Senior status or 1 year of C programming and UNIX user experience. 3Narahari ugradFallExposure 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)
4418Unix System Administration CSci4417. 3Narahari ugradSpringSystem 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)
4431Computer Networks I CSci 2461, 2113. 3Cheng ugradFallHigher-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)
4432Computer Networks II CSci 4431. 3Cheng ugradSpringComputer 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)
4455Computer Game Design and Programming 3Hahn ugradPrinciples, 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)