Undergraduate Programs
Courses
Computer Science
CSCI-A courses are non-major courses and are listed first regardless of the course level.
- CSCI-A 110 Introduction to Computers and Computing (3 cr.) CASE N&M One year of high school algebra or MATH-M 014 recommended. Basic principles of computers and software. Social and lifestyle effects of information technology. Emphasis on problem-solving techniques. Productivity software skills are taught using real-world projects. Lecture and laboratory. Credit given for only one of CSCI-A 106, A 110, or A 111.
- CSCI-A 111 A Survey of Computers and Computing (1.5 cr.) One year of high school algebra or MATH-M 014, and some prior computing experience recommended. Survey of computing concepts, with emphasis on problem-solving techniques. Experience in a variety of popular applications software for tasks such as word processing, Web browsing, spreadsheet calculations, and databases. Lecture and laboratory. An eight-week course. Credit given for only one of CSCI-A 106, A 110, or A 111.
- CSCI-A 112 Programming Concepts (1.5 cr.) CSCI-A 110, A 111, or equivalent computing experience recommended. Introduction to programming for users of computer systems. Emphasis on problem-solving techniques. Lecture and laboratory. An eight-week course. Credit not given for both CSCI-A 112 and INFO-I 110.
- CSCI-A 113 Data Analysis Using Spreadsheets (1.5 cr.) CSCI-A 110, A 111, or equivalent recommended. An introduction to data analysis using spreadsheets, including both scientific and business applications. Elementary statistical concepts and their applications to data analysis. Emphasis on problem-solving techniques. Lecture and laboratory. An eight-week course.
- CSCI-A 114 Introduction to Databases (1.5 cr.) CSCI-A 110, A 111, or equivalent recommended. Introduction to database design concepts. Entering and modifying data, accessing data using visual tools and SQL, building database applications using forms and application development tools. Emphasis on problem-solving techniques. Lecture and laboratory. An eight-week course. Credit not given for both CSCI-A 114 and INFO-I 111.
- CSCI-A 201 Introduction to Programming I (4 cr.) CASE N&M Two years of high school mathematics or MATH-M 014 recommended. Fundamental programming constructs, including loops, arrays, classes and files. General problem-solving techniques. Emphasis on modular programming, user-interface design, and developing good programming style. Not intended for computer science majors. Credit not given for both CSCI-A 201 and A 597.
- CSCI-A 202 Introduction to Programming II (4 cr.) CASE N&M P: CSCI-A 201 or A 304. Advanced programming techniques: user-defined functions and types, recursion vs iteration, parameter-passing mechanisms; Classic abstract data types and algorithms. Programming style. Object-oriented programming. Web programming. May be counted toward computer science major requirements if completed prior to CSCI-C212. Credit not given for both CSCI-A 202 and A 598.
- CSCI-A 216 Digital Multimedia Concepts and Technologies (3 cr.) CSCI-A 110, A 111, or equivalent computing experience recommended. In-depth introduction to the technologies of digital hardware and software relevant to efficient multimedia communication methods. Lectures focus on computational foundations, underlying concepts, and digital methods. Laboratory provides direct experience with concepts presented in lecture, using latest available digital tools to create direct and Web-based multimedia content. Lecture and laboratory.
- CSCI-A 290 Tools for Computing (1-4 cr.) Exploration of topics in computing. Common topics include tools for power users. May be repeated for a maximum of 6 credit hours.
- CSCI-A 304 Introductory C++ Programming (2 cr.) Programming experience recommended. Topics include aspects of C++ that are not object-oriented, basic data structures, standard libraries, and UNIX tools for project management.
- CSCI-A 306 Object-Oriented Programming in C++ (2 cr.) CSCI-A 201, A 304, or C 212 recommended. Topics include objects, classes, encapsulation, inheritance, polymorphism, templates, and exceptions.
- CSCI-A 310 Problem Solving Using Data (3 cr.) P: CSCI-C 200 or INFO-I 210 and CSCI-C 241 or INFO-I 201. This course introduces algorithms and data structures for solving real world problems using data. Topics include: searching and sorting, basic data structures (heaps, hash tables, binary search and splay trees etc.), concepts of algorithm design (e.g., divide-and-conquer, dynamic programming), graph algorithms and clustering.
- CSCI-A 321 Computing Tools for Scientific Research (4 cr.) CASE N&M MATH-M 118 or MATH-M 211 recommended. Introduction to computer-based tools useful for analysis and understanding of scientific data. Basic methods of computation, data processing, and display in systems such as Matlab combined with elementary practical C/C++ programming. Techniques to support customized scientific research tasks, with particular emphasis on biological, neural, and behavioral sciences. Lecture and laboratory.
- CSCI-A 338 Network Technologies and Systems Administration (4 cr.) CSCI-A 110, EDUC-W 200, or equivalent computer literacy recommended. Introduction to network principles and current network technology, both hardware and software. Network administration tools and techniques. Laboratory provides practical experience. Credit not given for both A 338 and A 538.
- CSCI-A 346 User-Interface Programming (3 cr.) CSCI-A 202, A 306, C 212, or equivalent experience recommended. Learn to prototype and build graphical user interfaces for computer applications. Contemporary software design methodology. Students design and implement prototype interfaces to applications provided by the instructor. Extensive use will be made of both commercial and experimental software tools.
- CSCI-A 348 Mastering the World Wide Web (3-4 cr.) Two semesters of programming experience, or equivalent, and some knowledge of operating systems recommended. Project-oriented course leading to ability to maintain a fully functional web site. Topics include internet network protocols and web programming, server administration, protocols, site design, and searching and indexing technologies.
- CSCI-B 351 Introduction to Artificial Intelligence (3 cr.) CASE N&M P: CSCI-C 200 or C 211. A survey of techniques for machine intelligence and their relation to human intelligence. Topics include modeling techniques, neural networks, problem-solving methods, heuristics, search, logic, knowledge representation, machine learning, and production systems. Credit not given for both CSCI-B 351 and COGS-Q 351.
- CSCI-B 355 Autonomous Robotics (3 cr.) Two semesters of computer programming recommended. Introduction to the design, construction, and control of autonomous mobile robots. This course covers basic mechanics, electronics and programming for robotics, as well as the applications of robots in cognitive science. Credit not given for both CSCI-B 355 and COGS-Q 360.
- CSCI-B 363 Bioinformatics Algorithms (4 cr.) One programming class or equivalent programming experience in C/C++, Java or Python recommended. The course will introduce algorithms for addressing real-world biological questions. For each topic, we will start with an important biological question and gradually present algorithms to answer this question. The course will also discuss the strategies to formulate an appropriate computation problem from a biological question to motivate algorithmic thinking.
- CSCI-B 365 Introduction to Data Analysis and Mining (3 cr.) Basic programming skills (CSCI-C 200, C-211 or INFO-I 210) recommended. The course objective is to study computational aspects of discovering patterns and relationships in large data. This course is designed to introduce fundamental concepts of data mining and provide hands-on experience in data collection, preprocessing, analysis, clustering and prediction.
- CSCI-B 392 Competitive Programming (3 cr.) P: CSCI-C 343. This course focuses on training students to prepare for programming contests (such as the ACM International Collegiate Programming Contest). The students will learn to design time and space efficient algorithms to solve challenging contest problems, and produce bug-free code under the pressure of time in contest. May be repeated for a maximum of 6 credit hours.
- CSCI-B 401 Fundamentals of Computing Theory (3 cr.) CASE N&M P: CSCI-C 212 and C 241. Fundamentals of formal language theory, computation models and computability, the limits of computability and feasibility, and program verification.
- CSCI-B 403 Introduction to Algorithm Design and Analysis (3 cr.) CASE N&M P: CSCI-C 241, (A 310 or C 343) and MATH-M 212. Algorithm design methodology. General methods for analysis of algorithms. Analysis of the performance of specific algorithms, such as those for searching and sorting. Credit not given for both CSCI-B 403 and B 503.
- CSCI-B 430 Security for Networked Systems (3 cr.) P: CSCI-C 231 or INFO-I 231. This course is an extensive survey of network security. The course materials cover threats to information confidentiality, integrity, and availability in different internet layers, and defense mechanisms that control these threats. The course also provides a necessary foundation on network security, such as cryptographic, primitives/protocols, authentication, authorization and access control technologies; and hands-on experiences through programming assignments and course projects. Credit given for only one of CSCI-B 430, INFO-I 430, or I 520.
- CSCI-B 433 Systems & Protocol Security & Information Assurance (3 cr.) P: CSCI-C 291 and (CSCI-C 231 or INFO-I 231). This class covers the fundamentals of computer security by looking at how things can go wrong, and how people can abuse the system. This is a matter of creative cheating; to find loopholes and exploit them. After students learn how to attack the system, it is possible to propose ways to make the system secure. Students will gain a basic overview of existing security problems and be exposed to methods that can be used to secure against such problems. The course should be taken by any one designing, selecting, or using applications in which security or privacy plays a role. Credit given for only one of CSCI-B 433, INFO-I 433, or I 533.
- CSCI-B 441 Digital Design (4 cr.) CASE N&M P: CSCI-C 335. Organization and logic design of digital systems. Course presents a structured design philosophy, emphasizing hardwired and micro-programmed control. Boolean algebra, hardware building blocks, circuit synthesis, micro-programming. In the laboratory, students build, study, and debug a working minicomputer from elementary hardware components. Lecture and laboratory. Credit not given for both CSCI-B 441 and B 541.
- CSCI-B 443 Introduction to Computer Architecture (3 cr.) CASE N&M P: CSCI-C 335 and C 343. Principles of processors, control units, and storage systems. Registers, buses, micro-programming, virtual storage. Relationship between computer architecture and system software. Credit not given for both CSCI-B 443 and B 543.
- CSCI-B 453 Game Development (3 cr.) P: CSCI-C 292 and CSCI-C 343. By taking this course, students gain high competence developing games using current game engines (e.g., Unity), and have exposure to advanced topics including shader creation, SpatialOS, procedural content generation, and/or creating dynamic UIs or AIs for games.
- CSCI-B 455 Principles of Machine Learning (3 cr.) P: MATH-M 211 and (CSCI-C 200 or C 211). In this course, we explore (machine learning) algorithms that can learn from and make predictions on data. This course introduces the statistical, mathematical, and computational foundations of these frameworks, with a strong focus on understanding the mathematical derivations for the algorithms and simultaneously implementing the algorithms.
- CSCI-B 456 Image Processing (3 cr.) P: CSCI-C 212 and MATH-M 212. The course emphasizes the general principle of image processing which includes data structures, algorithms, and analysis and modeling techniques used in modern imaging systems, digital image processing, and low-level computer vision. Topics include image sources, computer representation of images and formats, operations on images, and image analysis.
- CSCI-B 457 Introduction to Computer Vision (3 cr.) P: CSCI-A 310 or B 351 or C 343. In this course, the students will learn fundamental computer vision algorithms as well as basic machine learning frameworks necessary for automated understanding of images and videos. Topics will include object recognition from images, activity/event recognition from videos, scene segmentation and clustering, motion and tracking, deep learning for images and videos.
- CSCI-B 461 Database Concepts (3 cr.) CASE N&M P: CSCI-C 241 and (A 310 or C 343). Introduction to database concepts and systems. Topics include database models and systems: hierarchical, network, relational, and object-oriented; database design principles; structures for efficient data access; query languages and processing; database applications development; views; security; concurrency; recovery. Students participate in a project to design, implement, and query a database, using a standard database system. Credit not given for both CSCI-B 461 and B 561.
- CSCI-B 481 Interactive Graphics (4 cr.) CASE N&M P: CSCI-C 343 and MATH-M 301 or M 303. Computer graphics techniques. Introduction to graphics hardware and software. Two-dimensional graphics methods, transformations, and interactive methods. Three-dimensional graphics, transformations, viewing geometry, object modeling, and interactive manipulation methods. Basic lighting and shading. Video and animation methods. Credit not given for both CSCI-B 481 and B 581.
- CSCI-B 490 Seminar in Computer Science (1-4 cr.) Special topics in computer science. May be repeated for a maximum of 8 credit hours.
- CSCI-C 102 Great Ideas in Computing (3 cr.) Survey of great ideas in computing and the role of computing in the modern world. Explores how people use computing tools to realize their ideas. Emphasis on the impact of modern technology and the use of hardware and software to create solutions to everyday problems. Lecture and laboratory.
- CSCI-C 200 Introduction to Computers and Programming (4 cr.) High school precalculus math recommended. This course is an introduction, broadly, to algorithmic thinking and, specifically, to programming. It teaches the basics of programming using real world applications in natural, physical and social sciences. Students will develop ability to program by identifying problems in real world and then creating a program that solves the problem. Credit given for only one of CSCI-C 200, C 211, H 211 or A 591.
- CSCI-H 200 Introduction to Computers and Programming, Honors (4 cr.) Honors version of CSCI-C 200. This course is an introduction, broadly, to algorithmic thinking and, specifically, to programming. It teaches the basics of programming using real world applications in natural, physical and social sciences. Students will develop ability to program by identifying problems in real world and then creating a program that solves the problem.
- CSCI-C 211 Introduction to Computer Science (4 cr.) CASE N&M High school precalculus math recommended. A first course in computer science for those intending to take advanced computer science courses. Introduction to programming and to algorithm design and analysis. Using the Scheme programming language, the course covers several programming paradigms. Lecture and laboratory. Credit given for only one of CSCI-C 211, C 200, H 211 or A 591.
- CSCI-H 211 Introduction to Computer Science, Honors (4 cr.) CASE N&M High school precalculus math recommended. Honors version of CSCI-C 211. A first course in computer science for those intending to take advanced computer science courses. Introduction to programming and to algorithm design and analysis. Using the Scheme programming language, the course covers several programming paradigms. Lecture and laboratory. Credit given for only one of CSCI-H 211, C 200, C 211 or A 591.
- CSCI-C 212 Introduction to Software Systems (4 cr.) CASE N&M P: CSCI-C 200 or C 211. Design of computer software systems and introduction to programming in the environment of a contemporary operating system. Topics include a modern object-oriented programming language; building and maintaining large projects; and understanding the operating system interface. Lecture and laboratory. Credit given for only one of CSCI-C 212, H 212, A 592 or ENGR-E 111.
- CSCI-H 212 Introduction to Software Systems, Honors (4 cr.) CASE N&M P: CSCI-C 200 or C 211. Honors version of CSCI-C 212. Design of computer software systems and introduction to programming in the environment of a contemporary operating system. Topics include a modern object-oriented programming language; building and maintaining large projects; and understanding the operating system interface. Lecture and laboratory. Credit given for only one of CSCI-H 212, C 212, A 592 or ENGR-E 111.
- CSCI-C 231 Introduction to Mathematics of Cybersecurity (3 cr.) The goal of this course is for students to be introduced to the basic mathematical tools used in modern cybersecurity. The course covers introductory mathematical material from a number of disparate fields including probability theory, analysis of algorithms, complexity theory, number theory, and group theory. Credit not given for both CSCI-C 231 and INFO-I 231.
- CSCI-C 241 Discrete Structures for Computer Science (3 cr.) CASE N&M P: CSCI-C 200 or C 211. MATH-M 211 recommended. Induction and recursive programs, running time, asymptotic notations, combinatorics and discrete probability, trees and lists, the relational data model, graph algorithms, propositional and predicate logic. Credit not given for both CSCI-C 241 and H 241.
- CSCI-H 241 Discrete Structures for Computer Science, Honors (3 cr.) CASE N&M. P: CSCI-C 200 or C 211. MATH-M 211 recommended. Honors version of CSCI-C 241. Induction and recursive programs, running time, asymptotic notations, combinatorics and discrete probability, trees and lists, the relational data model, graph algorithms, propositional and predicate logic. Credit not given for both CSCI-H 241 and C 241.
- CSCI-C 290 Topics in Computer Science (1-3 cr.) Exploration of topics in computing. Common topics include tools for power users. May be repeated for a maximum of 6 credit hours.
- CSCI-C 291 System Programming with C and Unix (3 cr.) P: CSCI-A 201 or C 200 or C 211 or INFO-I 211. This course provides an introduction to programming in a Unix (Linux) environment using the C language. The key ideas to be discussed are: the Unix shell, file system and basic shell commands; the emacs text editor; and the C programming language.
- CSCI-C 292 Introduction to Game Programming (3 cr.) P: CSCI-C 212. This course explores the world of game development with a focus on programming for games. It provides an introduction to game programming using a state-of-the-art language (e.g., C#) in a game engine (e.g., Unity).
- CSCI-C 295 Leadership and Learning (1-2 cr.) P: CSCI-A 201 or C 200 or C 211 or INFO-I 210. Students in this course learn and practice how to teach fundamental Computer Science concepts and skills, and investigate strategies to increase K-12 students' interest in CS with different race, gender, age, socioeconomic status, and academic background. Furthermore, this course trains undergraduate instructors in the department to better perform their duties.
- CSCI-C 311 Programming Languages (4 cr.) CASE N&M P: CSCI-C 212 and C 241. Systematic approach to programming languages. Relationships among languages, properties and features of languages, and the computer environment necessary to use languages. Lecture and laboratory. Credit given for only one of CSCI-C 311, H 311, A 596 or B 521.
- CSCI-H 311 Programming Languages, Honors (4 cr.) CASE N&M P: CSCI-C 212 and C 241. Honors version of CSCI-C 311. Systematic approach to programming languages. Relationships among languages, properties and features of languages, and the computer environment necessary to use languages. Lecture and laboratory. Credit given for only one of CSCI-H 311, C 311, A 596 or B 521.
- CSCI-C 322 Object-Oriented Software Methods (4 cr.) P: CSCI-C 212. Design and implementation of complex software systems and applications exploiting the object-oriented paradigm. Selection and effective utilization of object-oriented libraries and interfaces.
- CSCI-C 323 Mobile App Development (3 cr.) P: CSCI-C 212. This course focuses on development of mobile applications for modern platforms and introduces common tools and languages used. The course will emphasize the app development cycle: application design, development, testing, publishing and distribution; development tools and emulators/simulators; user interface layout; using sensors including touch, geo-location and orientation; and data management.
- CSCI-C 335 Computer Structures (4 cr.) CASE N&M P: CSCI-C 212, C 241 and C 291. Structure and internal operation of computers. The architecture and assembly language programming of a specific computer are stressed, in addition to general principles of hardware organization and low-level software systems. Lecture and laboratory. Credit not given for both CSCI-C 335 and H 335.
- CSCI-H 335 Computer Structures, Honors (4 cr.) CASE N&M P: CSCI-C 212, C 241 and C 291. Honors version of CSCI-C 335. Structure and internal operation of computers. The architecture and assembly language programming of a specific computer are stressed, in addition to general principles of hardware organization and low-level software systems. Lecture and laboratory. Credit not given for both CSCI-H 335 and C 335.
- CSCI-C 343 Data Structures (4 cr.) CASE N&M P: CSCI-C 212 and C 241. Systematic study of data structures encountered in computing problems, structure and use of storage media, methods of representing structured data, and techniques for operating on data structures. Lecture and laboratory. Credit not given for both CSCI-C 343 and H 343.
- CSCI-H 343 Data Structures, Honors (4 cr.) CASE N&M P: CSCI-C 212 and C 241. Honors version of CSCI-C 343. Systematic study of data structures encountered in computing problems, structure and use of storage media, methods of representing structured data, and techniques for operating on data structures. Lecture and laboratory. Credit not given for both CSCI-H 343 and C 343.
- CSCI-C 460 Senior Project I (3 cr.) P: Department approval. Students work on projects in supervised teams, from planning and design to implementation, testing and releasing of a final product. Teamwork, communication, and organizational skills are emphasized in a real-world-style environment.
- CSCI-C 470 Senior Project II (3 cr.) P: Department approval. Students work on projects in supervised teams, from planning and design to implementation, testing and releasing of a final product. Teamwork, communication, and organizational skills are emphasized in a real-world-style environment.
- CSCI-H 498 Undergraduate Honors Seminar (1-3 cr.) Junior or senior major in computer science or informatics with a GPA of at least 3.3, or permission of instructor. A survey of faculty research in computer-related fields with different professors discussing their research each week. May be repeated for a maximum of 6 credit hours.
- CSCI-P 415 Introduction to Verification (3 cr.) CASE N&M P: CSCI-C 311. Tools and techniques for rigorous reasoning about software and digital hardware. Safety, reliability, security, and other design-critical applications. Decision algorithms. Projects involving the use of automated reasoning, such as model checkers, theorem provers, and program transformation. Credit not given for both CSCI-P 415 and P 515.
- CSCI-P 423 Compilers (4 cr.) CASE N&M P: CSCI-C 311. Compiler design and construction, including lexical analysis, parsing, code generation, and optimization. Extensive laboratory exercises. Credit given for only one of CSCI-P 423, P 523, ENGR-E 313, or E 513.
- CSCI-P 424 Advanced Functional Programming (3 cr.) P: CSCI-C 311. This course teaches advanced techniques for functional programming, which can be used to make programs easier to read and compose. These techiniques include equational reasoning, types, monads, and code generation. Some of them are useful even when using a "non-functional" language. Some of them are drawn from cutting-edge research.
- CSCI-P 434 Distributed Systems (4 cr.) P: CSCI-A 310 or C 343. Principles of distributed systems including sytem design, distributed algorithms, consistency and concurrency, and reliability and availability. The role of these foundational issues in distributed file systems, distributed computing, and data-driven systems. Credit given for only one of CSCI-P 434, B 534, ENGR-E 410, or E 510.
- CSCI-P 436 Introduction to Operating Systems (4 cr.) CASE N&M P: CSCI-C 335 and C 343. Organization and construction of computer systems that manage computational resources. Topics include specification and implementation of concurrency, process scheduling, storage anagement, device handlers, mechanisms for event coordination. Lecture and laboratory. Credit given for only one of CSCI-P 436, P 536, ENGR-E 319, or E 519.
- CSCI-P 438 Introduction to Computer Networks (4 cr.) P: CSCI-C 335. Foundations of computer networks. Networking hardware technology such as Ethernet, ATM, wireless. Networking protocols (TCP/IP), routing, error correcting. Network services such as DNS, Web servers, virtual private networks (VPN), open SSL. Credit given for only one of CSCI-P 438, P 538, ENGR-E 318, or E 518.
- CSCI-P 442 Digital Systems (4 cr.) CASE N&M P: CSCI-B 441. Elements of computer architecture construction of hardware systems, emphasizing a combination of components to form systems, and applications of general principles of computing to digital implementation. Lecture and laboratory. Credit not given for both CSCI-P 442 and P 542.
- CSCI-P 462 Database Application Design and Implementation (3 cr.) P: CSCI-B 461. This course deals with practical issues in the design and implementation of database application systems. Topics include database modeling design, query languages, communication with data, transaction management, concurrency control techniques, security, database design procedures, and some advanced database applications, such as data warehousing, data mining, semi-structured data and semantic web.
- CSCI-P 465 Software Engineering for Information Systems I (3 cr.) CASE N&M P: CSCI-A 310 or C 343. Analysis design, and implementation of information systems. Project specification. Data modeling. Software design methodologies. Software quality assurance. Supervised team development of a real system for a real client. Credit not given for both CSCI-P 465 and P 565.
- CSCI-P 466 Software Engineering for Information Systems II (3 cr.) CASE N&M P: CSCI-B 461 and C 343. Analysis design, and implementation of information systems. Project specification. Data modeling. Software design methodologies. Software quality assurance. Supervised team development of a real system for a real client. Credit not given for both CSCI-P 466 and P 566.
- CSCI-Y 390 Undergraduate Independent Study (1-3 cr.) Department approval. Independent research based on existing literature or original work. A report, in the style of a departmental technical report, is required. May be repeated for a maximum of 6 credit hours of any combination of CSCI-Y 390, Y 391, Y 399 and Y 499.
- CSCI-Y 391 Undergraduate Independent System Development (1-3 cr.) Department approval. The student designs, programs, verifies, and documents a project assignment. Prior to enrolling, the student must arrange for an instructor to supervise the course activity. May be repeated for a maximum of 6 credit hours of any combination of CSCI-Y 390, Y 391, Y 399 and Y 499.
- CSCI-Y 395 Career Development for CSCI Majors (1 cr.) Develop skills and knowledge that enable you to successfully pursue your career search, both at the time of graduation and later as you progress through your career. The course covers techniques and strategies which make your job search more efficient and effective. Offered as an eight week course. Credit given for only one of CSCI-Y 395, ENGR-Y 395, or INFO-Y 395.
- CSCI-Y 399 Project in Professional Practice (3 cr.) Department approval. The student designs, programs, verifies, and documents a project assignment selected in consultation with an employer and the department. May be repeated for a maximum of 6 credit hours of any combination of CSCI-Y 390, Y 391, Y 399 and Y 499.