Computer Science
Head: Calvin J. Ribbens
Associate Department Head for Undergraduate Studies: S. H. Edwards
Associate Department Head for Graduate Studies: C. A. Shaffer
Associate Department Head for Research and Engagement: K. W. Cameron
Associate Department Head for Faculty Development: A. R. Butt
Thomas L. Phillips Professor: N. Ramakrishnan
Frank J. Maher Professor: D. Bowman
W.C. English Professor: W. Lou
John W. Hancock Professor: D. Nikolopoulos
Professors: O. Balci, A. R. Butt, K. W. Cameron, I. R. Chen, S. H. Edwards, W. Feng, E. A. Fox, L. S. Heath, D. G. Kafura, B. Knapp1, C. T. Lu, T. M. Murali, C. L. North, A. Onufriev, C. Reddy, A. Sandu, C. A. Shaffer, E. Tilevich, L. T. Watson and D. Yao.
Associate Professors: G. Back, D. Bhattacharya, Y. Cao, J. H. Cho, H, Eldardiry, D. Gracanin, B. Ji, A. Kelliher1, K. Luther, D. S. McCrickard, S. Raghvendra, and L. Zhang
Assistant Professors: C. Brown, T. Chung, M. Gulzar, S. Hasan, M. Hicks, T. Hoang, L. Hu, L. Huang, X. Jian, A. Karpatne, S. W. Lee, I. Lourentzou, N. Meng, G. Peng, E. Rho, J. Sikora, B. Viswanath, D. Williams, and Y. Yang
Associate Professors of Practice: M. Ellis and G. Kulczycki
Collegiate Associate Professors: S. Hooshangi
Collegiate Assistant Professors: B. Edmison, O. Emebo, A. Esakia, M. Farghally, and M. Seyam
Senior Instructors: N. D. Barnette and W. McQuain
Advanced Instructors: D. McPherson
Professor Emeritus: D. C. S. Allison, J. D. Arthur, R. W. Ehrich, J. A. N. Lee, H. R. Hartson, R. E. Nance, and B. Ryder
Web: www.cs.vt.edu
E-mail: csundergrad@cs.vt.edu
The Field of Computer Science
In a contemporary world where every educated person must have some knowledge of computing, the Department of Computer Science offers degree programs and courses to meet a variety of needs. The department offers a bachelor of science degree to prepare specialists in the area of computer science itself, a minor in computer science, minors in specialized areas such as cybersecurity and human-computer interaction, and individual courses directed to the needs of non-majors who will be using computers as tools in their chosen careers. The department also offers the M.S., M.Eng., and Ph.D. in computer science (see Graduate Catalog).
Computer science involves far more than just writing computer programs. It is a technically rigorous field that requires a strong background in mathematics. Computer scientists must be good at problem solving. Their work requires the ability to think abstractly and to represent real-world objects and interactions in ways that can be manipulated by a computer. The field of computer science is characterized by rapid change and entrepreneurship, with new opportunities emerging every year to improve life in diverse areas such as education, communication, science, commerce and entertainment.
Accreditation and Program Objectives
The Bachelor of Science degree in Computer Science is accredited by the Computing Accreditation Commission of ABET, www.abet.org.
Part of the accreditation process is a clear statement of program objectives and desired outcomes for graduates. The following program educational objectives describe what graduates of the Virginia Tech Computer Science undergraduate program are expected to attain within a few years of graduation. Alumni will have:
- Demonstrated technical expertise by applying computer science knowledge and practice to solve challenging problems, whether in employment, graduate study, or individual pursuits;
- Advanced their skills in communication, teamwork, and professional and ethical behavior;
- Demonstrated leadership in their technical or professional pursuits;
- Engaged in post-graduate learning through graduate studies, professional improvement opportunities, or self-study;
- Served society through professional or personal contribution.
These objectives are supported by a curriculum that seeks to have its graduates achieve the following student outcomes upon graduation. Graduates of the program will have an ability to:
- Analyze a complex computing problem and to apply principles of computing and other relevant disciplines to identify solutions.
- Design, implement, and evaluate a computing- based solution to meet a given set of computing requirements in the context of the program's discipline.
- Communicate effectively in a variety of professional contexts.
- Recognize professional responsibilities and make informed judgments in computing practice based on legal and ethical principles.
- Function effectively as a member or leader of a team engaged in activities appropriate to the program's discipline.
- Apply computer science theory and software development fundamentals to produce computing-based solutions.
Degree Requirements
Students pursuing the Bachelor of Science Degree in Computer Science choose one of three majors. The Computer Science major is designed to provide a broad computer science background that will prepare a student for a wide variety of professional careers or to continue study at the graduate level. The Secure Computing major offers a more specialized path for students who are especially interested in secure computing and cybersecurity topics. The Data-Centric Computing Major offers a focus on topics in data science, data analytics, and computational aspects of big data computing. All majors include a set of foundational courses in software design and development, algorithms, and computer organization at the freshmen and sophomore level. Students at the junior and senior level select one theoretical course, several elective courses and a capstone course according to their individual interests.
Please visit the undergraduate program website at https://cs.vt.edu/Undergraduate.html for detailed requirements.
Opportunities for Majors
The department offers computer science majors the opportunity to enhance their education through a variety of curricular and extracurricular activities. Students who meet the requirements for independent study or undergraduate research can pursue research or individualized study under the direction of a faculty member. Through the Honors College, qualified students can work toward earning an Honors Laureate Diploma for their degree. Students may also elect to earn both the bachelor's and master's degrees in an accelerated undergraduate/graduate program. The Cooperative Education Program makes it possible for students to acquire professional experience while pursuing their degree. The department's corporate partnership program hosts large career fairs in both Fall and Spring semesters.
The department sponsors multiple student organizations, including the student chapter of the Association for Computing Machinery (ACM), the Association for Women in Computing (AWC), the CS Community Service organization, and the Programming Team. Additional opportunities for experiential learning and professional development include serving as a teaching assistant or department ambassador, attending a professional development or research conference, and participating in annual research competitions and hackathons. Financial aid is available through numerous college and department endowed scholarships.
Information for Non-Majors
The department offers a Computer Science minor for non-majors seeking a solid general background in computer science. The department also offers minors focused on human-computer interaction and cybersecurity. Please visit the department's undergraduate program website for more information.
Computational Facilities
The Department of Computer Science possesses extensive computational facilities for both instruction and research. There are several undergraduate teaching laboratories and a number of specially equipped research laboratories. These include large parallel computing clusters and numerous compute and file servers for research and instruction in areas such as artificial intelligence, machine learning, digital libraries, software engineering, bioinformatics and networking. The department also operates extensively equipped laboratories for human-computer Interaction, virtual environments and information visualization. Students studying computer science are supported by two department-specific Undergraduate Learning Centers on campus.
Undergraduate Course Descriptions (CS)
1014: INTRODUCTION TO COMPUTATIONAL THINKING An exploration of basic ideas of computational thinking focusing on the perspectives, thought processes, and skills that underlie computational approaches to problem formulation and problem solving. Applications of computational tools to investigate complex, large-scale problems in a variety of knowledge domains. Basic introduction to algorithms and a practical programming language. Examination of the societal and ethical implications of computational systems. (3H,3C)
1044: INTRODUCTION TO PROGRAMMING IN C Fundamental concepts underlying software solutions of many problems. Structured data, statement sequencing, logic control, input/output, and functions. The course will be taught using a structured approach to programming. Partially duplicates 1344. (3H,3C)
1054: INTRODUCTION TO PROGRAMMING IN JAVA An introduction to object-oriented programming using the Java language. Fundamental concepts underlying programming and software solutions to many problems. Structured data, statement sequencing, logic control, classes, objects, methods, instantiation of classes, sending messages to objects. The impact of computing on issues of diversity and inclusion. (3H,3C)
1064: INTRODUCTION TO PROGRAMMING IN PYTHON Introduction to programming in Python contextualized with scientific and engineering problems. Computational problem-solving skills and software solutions in addition to Python language fundamentals. The basics of control flow with loops and conditionals, state tracing and manipulation, simple and complex types, organization of code using functional and object-oriented coding strategies, and data processing. Create, interpret, and debug programs. Ethically debate important issues in computing culture. (3H,3C)
1114: INTRODUCTION TO SOFTWARE DESIGN Fundamental concepts of programming from an object-oriented perspective. Basic software engineering principles and programming skills in a programming language that supports the object-oriented paradigm. Simple data types, control structures, array and string data structures, basic algorithms, testing and debugging. A basic model of the computer as an abstract machine. Modeling and problem-solving skills applicable to programming at this level. Partially duplicates 1054, 1124, and 1705. (2H,2L,3C)
1604: INTRODUCTION TO THE INTERNET Introduces the concepts, software, data organization and issues involved with using networked information. Also covers file formats (as applied in networked hypermedia and multimedia sound/video documents), local and global (Internet) network access, electronic mail, transferring files, network news, the World Wide Web, digital libraries, on-line public access catalogs and electronic journals, CD-ROMs and on-line databases, and commercial and other networks. Word processing ability required. (1H,1C)
1944: COMPUTER SCIENCE FIRST YEAR SEMINAR An introduction to academic and career planning for computer science majors. Pass/Fail only. Pre: 1114. (1H,1C)
2064: INTERMEDIATE PROGRAMMING IN PYTHON Advanced uses of control flow and data processing, data structures, computational techniques, object-oriented programming, and modern data science pipelines. Creating, interpreting, and debugging complex programs. Problems and projects contextualized for scientists and engineers. Implementation of Python programs in data science and production environments, production of object-oriented solutions to complex problems, and ethical implications of technological change. Pre: 1064. (3H,3C)
2104: INTRODUCTION TO PROBLEM SOLVING IN COMPUTER SCIENCE This course introduces the student to a broad range of heuristics for solving problems in a range of settings that are relevant to computation. Emphasis on problem-solving techniques that aid programmers and computer scientists. Heuristics for solving problems in the small (classical math and word problems), generating potential solutions to real-life problems encountered in the profession, problem solving through computation, and problem solving in teams. Pre: MATH 1205 or MATH 1225 or MATH 1526, CS 1114. (3H,3C)
2114: SOFTWARE DESIGN AND DATA STRUCTURES A programming-intensive exploration of software design concepts and implementation techniques. Builds on knowledge of fundamental object-oriented programming. Advanced object-oriented software design, ethics in computing, algorithm development and analysis, and classic data structures. Includes a team-based software project. Pre: 1114. (2H,3L,3C)
2144: COMPETITIVE PROBLEM SOLVING I Fundamentals of algorithms, data structures, and implementation techniques, taught in a setting that combines collaborative practice with competitive exercise. Students practice to solve problems using a computer, which are judged by automated evaluation software for correctness and efficiency. Practice with data structures including arrays, lists, maps, and trees, as well as algorithmic strategies including recursion, divide-and-conquer, dynamic programming, search and traversal algorithms, graph representations, and computational geometry. Macro- and micro optimization techniques to improve efficiency are emphasized. Pre: 1114. (3H,3C)
2164 (BIT 2164) (PSCI 2164): FOUNDATIONS OF CONTEMPORARY SECURITY ENVIRONMENTS Introduction to multiple analytical perspectives on contemporary security environments, including political, legal, ethical, technical, environmental and historical and cultural perspectives relative to the conception, design and implementation of security solutions, practices, and policies. Emphasizes applying and analyzing the effectiveness of diverse procedures, tools and policies used in security and privacy solutions, decision-making, risk management and operational policy to mitigate local, national, international and global threats. (3H,3C)
2304: TOPICS IN PROGRAMMING SYSTEMS Guided self-study in a specific programming system, its syntax and applications. Based on prior knowledge of the programming process and experience in programming with some high-level language. Systems include JavaScript, C++, CUDA, Ruby, SQL, FORTRAN, UNIX, etc. May be taken three times for credit with different system each time. May be taken only twice for CS major or minor credit. Pre: 2114. (1H,1C)
2505-2506: INTRODUCTION TO COMPUTER ORGANIZATION An introduction to the design and operation of digital computers. Works up from the logic gate level to combinational and sequential circuits, information representation, computer arithmetic, arithmetic/logic units, control unit design, basic computer organization, relationships between high level programming languages and instruction set architectures. A grade of C or better is required in CS prerequisite. Corequisites: MATH 2534 or MATH 3034. Pre: 2114 for 2505; 2505, 2114, (MATH 2534 or MATH 3034) for 2506. (3H,3C)
2964: FIELD STUDY Pass/Fail only. Variable credit course.
2974: INDEPENDENT STUDY Variable credit course.
2984: SPECIAL STUDY Variable credit course.
2984E: SPECIAL STUDY Variable credit course.
3114: DATA STRUCTURES AND ALGORITHMS Advanced data structures and analysis of data structure and algorithm performance. Sorting, searching, hashing, and advanced tree structures and algorithms. File system organization and access methods. Ethical issues in the context of data analysis and software performance. Course projects require advanced problem-solving, design, and implementation skills. Pre: 2114, 2505, (MATH 2534 or MATH 3034). (3H,3C)
3214: COMPUTER SYSTEMS Introduction to computer systems as they are relevant to application programmers today, with emphasis on operating system principles. Operating system design and architectures; processes; threads, synchronization techniques, deadlock; CPU scheduling; system call interfaces, system level I/O and file management; shell programming; separate compilation, loading and linking; inter-process communication (IPC); virtual and physical memory management and garbage collection; network protocols and programming; virtualization; performance analysis and optimization. A grade of C or better is required in CS pre-requisites 2506 and 2114. Pre: (2506, 2114) or (ECE 2564, ECE 3574). (3H,3C)
3274: SOFTWARE REVERSE ENGINEERING Theory and practice of software reverse engineering, static and dynamic analysis techniques and tools, reverse engineering of malware, obfuscated binaries, communications and command and control analysis, reverse engineering of non-binary software. Pre: (2114, 2506) or (ECE 2534, ECE 2574). (3H,3C)
3304: COMPARATIVE LANGUAGES This course in programming language constructs emphasizes the run-time behavior of programs. The languages are studied from two points of view: (1) the fundamental elements of languages and their inclusion in commercially available systems; and (2) the differences between implementations of common elements in languages. A grade of C or better required in CS prerequisite 3114. Pre: 3114. (3H,3C)
3414 (MATH 3414): NUMERICAL METHODS Computational methods for numerical solution of non-linear equations, differential equations, approximations, iterations, methods of least squares, and other topics. A grade of C or better required in CS prerequisite 1044 or 1705. A student can earn credit for at most one of 3414 and MATH 4404. Pre: (1044 or 1705 or 1114 or 1124), MATH 2406H or (CMDA 2005, CMDA 2006) or (MATH 22 14 or MATH 2214H), (MATH 2204H or MATH 2204). (3H,3C)
3604: PROFESSIONALISM IN COMPUTING Studies the ethical, social, and professional concerns of the computer science field. Covers the social impact of the computer, implications and effects of computers on society, and the responsibilities of computer professionals in directing the emerging technology. The topics are studied through case studies of reliable, risk-free technologies, and systems that provide user friendly processes. Specific studies are augmented by an overview of the history of computing, interaction with industrial partners and computing professionals, and attention to the legal and ethical responsibilities of professionals. This is a web-supported course, incorporating writing intensive exercises, making extensive use of active learning technologies. A grade of C or better required in CS prerequisite 3114. Pre: 1944, 2114, COMM 2004. (3H,3C)
3634 (CMDA 3634): COMPUTER SCIENCE FOUNDATIONS FOR COMPUTATIONAL MODELING & DATA ANAL YTICS Survey of computer science concepts and tools that enable computational science and data analytics. Data structure design and implementation. Analysis of data structure and algorithm performance. Introduction to high-performance computer architectures and parallel computation. Basic operating systems concepts that influence the performance of large-scale computational modeling and data analytics. Software development and software tools for computational modeling. Not for CS major credit. Pre: 2114. (3H,3C)
3654 (CMDA 3654) (STAT 3654): INTRODUCTORY DATA ANALYTICS & VISUALIZATION Basic principles and techniques in data analytics; methods for the collection of, storing, accessing, and manipulating standard-size and large datasets; data visualization; and identifying sources of bias. Pre: (1114 or 1044 or 1054 or 1064), (MATH 2224 or MATH 2224H or MATH 2204 or MATH 22 04H or MATH 2406H or CMDA 2005), (STAT 3006 or STAT 4105 or STAT 4705 or STAT 4714 or CMDA 2006). (3H,3C)
3704: INTERMEDIATE SOFTWARE DESIGN AND ENGINEERING Explores the principles of software design in detail, with an emphasis on software engineering aspects. Includes exposure of software lifecycle activities including design, coding, testing, debugging, and maintenance, highlighting how design affects these activities. Peer reviews, designing for software reuse, CASE tools, and writing software to specifications are also covered. A grade of C or better required in CS prerequisite 3114. Pre: 3114. (3H,3C)
3714: MOBILE SOFTWARE DEVELOPMENT Technologies and concepts underlying software development for mobile devices (handheld computers). Mobile computing platforms, including architecture, operating system, and programming environment. Software design patterns and structuring for mobile applications. Network-centric mobile software development. Data persistence. Programming for mobile device components such as cameras, recorders, accelerometer, gyroscope and antennas. Location-aware software development. A grade of C or better required in CS prerequisite. Pre: 2114. (3H,3C)
3724: INTRODUCTION TO HUMAN-COMPUTER INTERACTION Survey of human-computer interaction concepts, theory, and practice. Basic components of human-computer interaction. Interdisciplinary underpinnings. Informed and critical evaluation of computer-based technology. User-oriented perspective, rather than system-oriented, with two thrusts: human (cognitive, social) and technological (input/output, interactions styles, devices). Design guidelines, evaluation methods, participatory design, communication between users and system developers. A grade of C or better required in CS prerequisite 2114. Pre: 1114 or 1044 or 1054 or 1064. (3H,3C)
3744: INTRODUCTION TO GUI PROGRAMMING AND GRAPHICS Design and implementation of object-oriented graphical user interfaces (GUI) and two-dimensional computer graphics systems. Implementation methodologies including callbacks, handlers, event listeners, design patterns, layout managers, and architectural models. Mathematical foundations of computer graphics applied to fundamental algorithms for clipping, scan conversion, affine and convex linear transformations, projections, viewing, structuring, and modeling. A grade of C or better is required in CS pre-requisite 2114. Pre: 2114, (MATH 1114 or MATH 1114H or MATH 2114 or MATH 2114H), (MATH 1224 or MATH 1 224H or MATH 2204 or MATH 2204H). (3H,3C)
3754: CLOUD SOFTWARE DEVELOPMENT Fundamentals of cloud software development, including design patterns, application programming interfaces, and underlying middleware technologies. Development of distributed multi-tiered enterprise software applications that run on a server computer and are accessed using a web browser over the Internet on a network-connected computer such as desktop, laptop, or handheld computer (tablet, smartphone, or mobile device. A grade of C or better is required in prerequisite. Pre: 2114. (3H,3C)
3824: INTRODUCTION TO COMPUTATIONAL BIOLOGY AND BIOINFORMATICS Introduction to computational biology and bioinformatics (CBB) through hands-on learning experiences. Emphasis on problem solving in CBB. Breadth of topics covering structural bioinformatics; modeling and simulation of biological networks; computational sequence analysis; algorithms for reconstructing phylogenies; computational systems biology; and data mining algorithms. Pre-requisite: Grade of C or better in CS 3114. Pre: 3114. (3H,3C)
3984: SPECIAL STUDY Variable credit course.
4104: DATA AND ALGORITHM ANALYSIS Data structures and algorithms from an analytical perspective. Theoretical analysis of algorithm efficiency. Comparing algorithms with respect to space and run-time requirements. Analytical methods for describing theoretical and practical bounds on performance. Constraints affecting problem solvability. A grade of C or better is required in CS prerequisite 3114. Pre: 3114, (MATH 3034 or MATH 3134). (3H,3C)
4114: INTRODUCTION TO FORMAL LANGUAGES AND AUTOMATA THEORY The course presents a study of formal languages and the correspondence between language classes and the automata that recognize them. Formal definitions of grammars and acceptors, deterministic and nondeterministic systems, grammar ambiguity, finite state and push-down automata, and normal forms will be discussed. Pre: MATH 3134 or MATH 3034. (3H,3C)
4124: THEORY OF COMPUTATION Theoretical analysis of the computational process; fundamental concepts such as abstract programs, classes of computational machines and their equivalence, recursive function theory, unsolvable problems, Churchs thesis, Kleenes theorem, program equivalence, and generability, acceptability, decidability will be covered. Pre: MATH 3134 or MATH 3034. (3H,3C)
4144: COMPETITIVE PROBLEM SOLVING II Deeper treatment of advanced algorithms, data structures, and implementation techniques, taught in a setting that combines collaborative practice with competitive exercise. Students practice to solve problems using a computer, which are judged by automated evaluation software for correctness and efficiency. Practice with advanced searching and graph algorithms, advanced dynamic programming, linear programming techniques, computational geometry, and numerical algorithms. Problems are drawn from multiple areas in computer science. Macro- and micro optimization techniques to improve efficiency are emphasized. Pre: 2114, 2144. (3H,3C)
4164 (BIT 4164) (PSCI 4164): FUTURE OF SECURITY: INTEGRATIVE SOLUTIONS FOR COMPLEX SE CURITY SYSTEMS Identification and analysis of complex, real-world security problems and threats to people, organizations, and nations across multiple domains, roles and future scenarios. Crisis communication, decision making tools, ethical principles and problem-solving methods to respond, assess options, plan, scope, and communicate before, during and after conflicts, disasters and attacks. Use of an experiential learning facility, and participation in a reality-based team simulation of cascading security and disaster events. Pre: PSCI 2164 or BIT 2164 or CS 2164. (3H,3C)
4204: COMPUTER GRAPHICS Hardware and software techniques for the display of graphical information. 2D and 3D geometry and transformations, clipping and windowing, software systems. Interactive graphics, shading, hidden surface elimination, perspective depth. Modeling and realism. A grade of C or better required in CS prerequisite 3114 and 3744. Pre: 3114, 3744. (3H,3C)
4214: SIMULATION AND MODELING Overview of discrete-event digital computer simulation and modeling. Fundamentals of model development, Monte Carlo simulation, the life cycle of a simulation study, input and output data analysis, world views and time control, random number and variate generation, credibility assessment of simulation results, simulation languages, applications of simulation using the General Purpose Simulation System (GPSS). A grade of C or better required in CS prerequisite 2114. Pre: 2114. (3H,3C)
4224 (ECE 4414): LINUX KERNEL PROGRAMMING Design and internal organization of the Linux operating system kernel. Kernel subsystems, boot process, memory management, process and thread model, scheduling, interrupt and exception handling, virtual file system and the concrete file system, block I/O and I/O scheduler, network stack, and device drivers. Modification of existing kernel code. Design, implementation, test and evaluation of new kernel modules. Kernel and full software stack debugging techniques, and virtualization as an aid for operating system development and debug. Software engineering techniques to analyze, modify and run a large, complex open-source code base. Pre: ECE 3574 or CS 3114. (3H,3C)
4234: PARALLEL COMPUTATION Survey of parallel computer architectures, models of parallel computation, and interconnection networks. Parallel algorithm development and analysis. Programming paradigms and languages for parallel computation. Example applications. Performance measurement and evaluation. A grade of C or better required in CS prerequisite 3214. Pre: 3214. (3H,3C)
4244: INTERNET SOFTWARE DEVELOPMENT Key technology underlying the World-Wide Web. Web architecture, including client and server design, network protocols, and related standards. Static and dynamic content, caching, state management, fault tolerance, error handling. Programming systems and abstractions, e.g., sockets, remote procedures, Web services, frameworks and component models. Document representations and processing. Security. Entrepreneurial issues and emerging technologies. A grade of C or better required in CS 3214 prerequisite. Pre: 3214. (3H,3C)
4254: COMPUTER NETWORK ARCHITECTURE AND PROGRAMMING Introduction to computer network architecture, and methods for programming network services and applications (e.g. DNS, Email and MIME, http, SNMP, multimedia). Wired, wireless, and satellite network architectures. OSI protocol model, with an emphasis on upper layers. Congestion control, quality of service, routing. Internet protocol suite (e.g. IP, TCP, ARP, RARP). Server design (e.g. connectionless, concurrent). Network programming abstractions (e.g. XDR, remote procedure calls, sockets, DCOM). Case studies (e.g. TELNET). A grade of C or better required in CS prerequisite 3214. Pre: 3214. (3H,3C)
4264: PRINCIPLES OF COMPUTER SECURITY Survey of computer problems and fundamental computer security design principles and models for software systems. Cryptographic models and methods. Modern cyber security techniques for robust computer operating systems, software, web applications, large-scale networks and data protection. Privacy models and techniques. Contemporary computer and network security examples. A grade of C or better is required in prerequisites. Pre: 3214 or (ECE 2500, ECE 3574). (3H,3C)
4274: SECURE COMPUTING CAPSTONE Advanced topics in cybersecurity and secure computing. Threat modeling through identification and analysis of security threats. Reasoning about the efficacy, complexity, cost, and ethical tradeoffs of computer security systems. Team-based approach to solving open-ended computer security problems. Designing, implementing, documenting, and presenting advanced computer systems. Pre: 3114, 4264. (3H,3C)
4284: SYSTEMS & NETWORKING CAPSTONE Advanced topics in computer systems & networking, e.g. distributed and parallel processing, emerging architectures, novel systems management & networking design, fault- tolerance, and robust and secure data management. Team- based approach to solving open-ended computer systems & networking problems. Designing, implementing and documenting advanced computer/networking systems. A grade of C or better required in CS prerequisites. Pre: 3114, 3214. (3H,3C)
4304: COMPILER DESIGN AND IMPLEMENTATION This course includes the theory, the design, and the implementation of a large language translator system. Lexical analysis, syntactic analysis, code generation, and optimization are emphasized. A grade of C or better required in CS prerequisite 3214. Pre: 3214. (3H,3C)
4414 (MATH 4414): ISSUES IN SCIENTIFIC COMPUTING Theory and techniques of modern computational mathematics, computing environments, computational linear algebra, optimization, approximation, parameter identification, finite difference and finite element methods and symbolic computation. Project-oriented course; modeling and analysis of physical systems using state-of-the-art software and packaged subroutines. Pre: (MATH 2214 or MATH 2214H or MATH 2406H or CMDA 2006), MATH 3214, (CS 2114 or MAT H 3054). (2H,3L,3C)
4504 (ECE 4504): COMPUTER ORGANIZATION Overview of the structure, elements and analysis of modern enterprise computers. Performance evaluation of commercial computing. Past and emerging technology trends. Impact of parallelism at multiple levels of computer architecture. Memory and storage. Fundamental computer system descriptions, Amdahls Law, Flynns Taxonomy. A grade of C or better required in prerequisites. Pre: ECE 2500 or CS 3214. (3H,3C)
4570 (ECE 4570): WIRELESS NETWORKS AND MOBILE SYSTEMS Multidisciplinary, project-oriented design course that considers aspects of wireless and mobile systems including wireless networks and link protocols, mobile networking including support for the Internet Protocol suite, mobile middleware, and mobile applications. Students complete multiple experiments and design projects. Pre: 4254 or ECE 4564. (3H,3C)
4604: INTRODUCTION TO DATA BASE MANAGEMENT SYSTEMS Emphasis on introduction of the basic data base models, corresponding logical and physical data structures, comparisons of models, logical data design, and data base usage. Terminology, historical evolution, relationships, implementation, data base personnel, future trends, applications, performance considerations, data integrity. Senior standing required. A grade of C or better required in CS prerequisite 3114. Pre: 3114. (3H,3C)
4624: MULTIMEDIA, HYPERTEXT AND INFORMATION ACCESS Introduces the architectures, concepts, data, hardware, methods, models, software, standards, structures, technologies, and issues involved with: networked multimedia information and systems, hypertext and hypermedia, networked information videoconferencing, authoring/electronic publishing, and information access. Coverage includes how to capture, represent, link, store, compress, browse, search, retrieve, manipulate, interact with, synchronize, perform, and present: text, drawings, still images, animations, audio, video, and their combinations (including in digital libraries). Pre: 3114. (3H,3C)
4634: DESIGN OF INFORMATION Survey of the higher-order properties that allow data to become information, that is, to inform people. The course focuses on the analysis of user needs, user comprehension and local semantics; the design of information organization; and the design of information display appropriate to use and setting. A grade of C or better is required in CS prerequisites 3114 and 3724. Pre: 3114, 3724. (3H,3C)
4644: CREATIVE COMPUTING STUDIO Capstone computer science course at the intersection of arts and technology. Intensive immersion in different approaches to digital arts such as game design, interactive art, digital music, and immersive virtual reality. Students work in teams to conduct an end-to-end integrative design project. A grade of C or better is required in prerequisite CS 3724. Pre: 3724. (3H,3C)
4654 (CMDA 4654) (STAT 4654): INTERMEDIATE DATA ANALYTICS AND MACHINE LEARNING A technical analytics course. Covers supervised and unsupervised learning strategies, including regression, generalized linear models, regulations, dimension reduction methods, tree-based methods for classification, and clustering. Upper-level analytical methods shown in practice: e.g., advanced naive Bayes and neural networks. Pre: (STAT 3654 or CMDA 3654 or CS 3654), (CMDA 2006 or STAT 3104 or STAT 4106 or STA T 4706). (3H,3C)
4664: DATA-CENTRIC COMPUTING CAPSTONE Advanced, project-based course on deriving valuable insights from real-world data collected from a variety of sources. Team-based end-to-end projects explore the entire data science workflow: problem statement, formulating the research questions, collecting preparing and cleaning data, alternating between analyzing data and interpreting results, and synthesizing results into a written report and an interactive executable codebase. Pre: 3114, 3654 or CMDA 3654 or STAT 3654. (3H,3C)
4704: SOFTWARE ENGINEERING CAPSTONE Senior project course integrating software engineering knowledge and skills acquired in previous courses. Team- based approach to problem formulation, requirements engineering, architecture, design, implementation, integration, documentation and delivery of software system that solves a real-world problem. Pre: A grade of C or better in CS 3704. Pre: 3704 or 3714 or 3754. (3H,3C)
4774: HUMAN-COMPUTER INTERACTION DESIGN EXPERIENCE Project-based design course in human-computer interaction. Team-based, end-to-end, integrative interface design project drawn from interdisciplinary areas of student expertise, e.g., virtual reality, augmented reality, embodied cognition, visualization, semiotic engineering, game design, personal information management, mobile computing, design tools, educational technology, and digital democracy. Not for CS major credit. Senior standing. Pre: 3724, (HIST 2604 or SOC 2604 or STS 2604), COMM 2084. (3H,3C)
4784: HUMAN-COMPUTER INTERACTION CAPSTONE Advanced, project-based course in Human-Computer Interaction. Team-based, end-to-end, integrative interface design project drawn from area of expertise in the department, e.g., virtual reality, augmented reality, embodied cognition, visualization, semiotic engineering, game design, personal information management, mobile computing, design tools, educational technology, and digital democracy. Pre-requisite: Senior Standing required. A grade of C or better is required in CS pre-requisite 3724 and 3744 Pre: 3724, 3744. (3H,3C)
4804: INTRODUCTION TO ARTIFICIAL INTELLIGENCE Overview of the areas of problem solving, game playing, and computer vision. Search trees and/or graphs, game trees, block world vision, syntactic pattern recognition, object matching, natural language, and robotics. Senior standing required. A grade of C or better required in CS prerequisite 3114. Pre: 3114. (3H,3C)
4824 (ECE 4424): MACHINE LEARNING Algorithms and principles involved in machine learning; focus on perception problems arising in computer vision, natural language processing and robotics; fundamentals of representing uncertainty, learning from data, supervised learning, ensemble methods, unsupervised learning, structured models, learning theory and reinforcement learning; design and analysis of machine perception systems; design and implementation of a technical project applied to real-world datasets (images, text, robotics). A grade of C- or better in prerequisites. Pre: ECE 2574 or CS 2114, (STAT 4604 or STAT 4705 or STAT 4714). (3H,3C)
4884: COMPUTATIONAL BIOLOGY & BIOINFORMATICS CAPSTONE Advanced topics in computational biology and bioinformatics (CBB). Team-based approach to solving open-ended problems in CBB. Projects drawn from areas of expertise in the department, e.g., algorithms for CBB, computational models for biological systems, analysis of structure-function relationships in biomolecules, genomic data analysis and data mining, computational genomics, systems biology. Design, implementation, documentation and presentation of solutions. A grade of C or better required in CS prerequisite 3824. Pre: 3824. (3H,3C)
4944: SEMINAR Pass/Fail only. Pre: 3604. (1H,1C)
4964: FIELD STUDY Pass/Fail only. Variable credit course.
4974: INDEPENDENT STUDY Variable credit course.
4984: SPECIAL STUDY Variable credit course.
4994: UNDERGRADUATE RESEARCH Variable credit course.