Skip Navigation

University Bulletin: Undergraduate Programs The George Washington University  



Professors S.Y. Berkovich, R.S. Heller, H.-A. Choi, A. Youssef (Chair), B. Narahari, J.K. Hahn, R. Simha

Associate Professors S. Rotenstreich, A. Bellaachia, X. Cheng, P. Vora, N. Zhang, M. Diab

Assistant Professors G.A. Parmer, E. Drumwright, M. Clarkson, C. Monteleoni, H. Wee, T. Wood, G. Sibley

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, 3362/6362, 4223/6223, 4331/6331, 4341/6341, 4364/63644431/64311, 4521/6521, 4525/6525, 4527/6527, 4531/6531, 4532/6532, 4541/6541.

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) Wood 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) Drumwright 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) Vora, 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) Vora, 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) Clarkson 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-Senior Design with Research (3) Parmer, Simha
  For students who wish to combine a research project with their Senior Design project. The goal is to complete the research, under a faculty mentor, within three semesters. Prerequisite: CSci 3212, 3313, 3411, and permission of instructor. (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)
3362 Probability for Computer Science (3) Monteleoni and Staff
  Introduction to probability and statistics for computer scientists. Random variables. Conditional probability, independence, correlation. Applications to computer science, including information theory, data compression, coding, inference, Markov chains, introduction to randomized algorithms. Prerequisite: Math 1232, CSci 1311; or permission of instructor. (Spring)
3410 Systems Programming (3) Parmer, Wood, and Staff
  Concepts underlying all computer systems. Processor operation, hierarchical memory systems, embedded boards, data acquisition, actuation, and systems software such as compilers, linkers, and operating systems from the programmer’s perspective. Use of embedded platforms to examine how programs interact with and are constrained by hardware. Prerequisite: CSci 2461, 2113. (Spring)
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) Simha 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)
4223 Principles of Programming Languages (3) Clarkson and Staff
  Fundamental concepts underlying design of programming languages. Detailed study of functional and object-oriented computational models. Types, evaluation, abstraction, control flow, modules, mutation, laziness, polymorphism, subtyping, inheritance. Practice learning new languages. Prerequisite: CSci 1311, 2113. (Spring, odd years)
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 capstone project. 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) Simha 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. May be taken for graduate credit. Prerequisite: CSci 2113. (Spring)
4364 Machine Learning (3) Monteleoni and Staff
  Overview of core machine learning techniques: nearest-neighbor, regression, classification, perceptron, kernel methods, support vector machine (SVM), logistic regression, ensemble methods, hidden Markov models (HMM), non-parametrics, online learning, active learning, clustering, feature selection, parameter tuning, and cross-validation. Prerequisite: CSci 3212, 3362, Math 2184; or permission of instructor. (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) Sibley 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)
4521 Autonomous Robotics: Mobility and Perception (3) Sibley, Drumwright, and Staff
  Overview of autonomous mobile robotics. Sensing, localization, calibration, mapping, perception, decision making, planning, and control. Emphasis on algorithmic rather than hardware aspects of robotics. Development of algorithms that can operate autonomous mobile platforms in complex, real-world environments. Prerequisite: Math 1232, 2184; CSci 3362 or 4341. (Fall)
4525 Autonomous Robotics: Manipulation (3) Drumwright, Sibley, and Staff
  Introduction to robot manipulation. Core principles necessary to program robots for autonomous operation in dynamic and typically human-centric environments. Transdisciplinary concepts from computer science (reinforcement learning, perception), mechanical engineering (kinematics, dynamics), and electrical engineering (control theory). Prerequisite: permission of instructor. (Spring)
4527 Introduction to Computer Vision (3) Sibley and Staff
  Introduction and overview of computer vision. Image-formation signal processing and filtering. Saliency, image features and feature extraction, tracking, stereo disparity estimation, structure form motion, photogrammetry, optic flow, homography estimation and warping, scene segmentation, place recognition, object recognition, robust estimation, and camera calibration. Prerequisite: Math 1232, 2184; CSci 4362 or 4341. (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. (Fall)
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) Rotenstreich 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) Rotenstreich 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)

The George Washington University

© 2013 University Bulletin
The George Washington University All rights reserved.

Information in this bulletin is generally accurate as of fall 2012. The University reserves the right to change courses, programs, fees, and the academic calendar, or to make other changes deemed necessary or desirable, giving advance notice of change when possible.