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 P: One year of high school algebra or MATH-M 014. 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.) P: One year of high school algebra or MATH-M 014, and some prior computing experience. 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.) P: CSCI-A 110, A 111, or equivalent computing experience. Introduction to programming for users of computer systems. Emphasis on problem-solving techniques. Lecture and laboratory. An eight-week course.Crosslisted with INFO-I 110. Credit not given for both CSCI-A 112 and INFO-I 110.
- CSCI-A 113 Data Analysis Using Spreadsheets (1.5 cr.) P: CSCI-A 110, A 111, or equivalent. 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.) P: CSCI-A 110, A 111, or equivalent. 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. Crosslisted with INFO-I 111. Credit not given for both CSCI-A 114 and INFO-I 111.
- CSCI-A 201 Introduction to Programming I (4 cr.) CASE N&M P: Two years of high school mathematics or MATH-M 014. Fundamental programming constructs, including loops, arrays, and files. General problem-solving techniques. Emphasis on modular programming 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. 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.) P: CSCI-A 110, A 111, or equivalent computing experience. N & M 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. Prerequisites vary by topic. Lecture and laboratory format. May be repeated for a maximum of 6 credit hours.
- CSCI-A 304 Introductory C++ Programming (2 cr.) P: Programming experience. 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.) P: CSCI-A 201, A 304, A 597, or C 212. Topics include objects, classes, encapsulation, inheritance, polymorphism, templates, and exceptions.
- CSCI-A 321 Computing Tools for Scientific Research (4 cr.) CASE N&M P: MATH-M 118 or higher required; 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 Administration (4 cr.) P: CSCI-A 110, EDUC-W 200, or equivalent computer literacy. Introduction to network principles and current network technology, both hardware and software. Network administration tools and techniques. Laboratory provides practical experience.
- CSCI-A 346 User-Interface Programming (3 cr.) P: CSCI-A 202, A 306, A 597, C 212, or equivalent experience. 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 is made of both commercial and experimental software tools.
- CSCI-A 348 Mastering the World Wide Web (3-4 cr.) P: Two semesters of programming experience, or equivalent, and some knowledge of operating systems. 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 and Computer Simulation (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 and parallel processing systems, problem-solving methods, vision, heuristics, production systems, speech perception, and natural language understanding. Credit not given for both CSCI-B 351 and COGS-Q 351.
- CSCI-B 355 Autonomous Robotics (3 cr.) P: Two semesters of computer programming or consent of instructor. 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.) P: One programming class or equivalent programming experience in C/C++, Java or Python. 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.) P: Basic programming skills (CSCI-C 210, C-211 or INFO-I 210). 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 401 Fundamentals of Computing Theory (3 cr.) CASE N&M P: CSCI-C 241. CSCI-C 212. C: CSCI-C 212. 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, C 343 and MATH-M 216 or 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 441 Digital Design (4 cr.) CASE N&M P: CSCI-C 335. Lab fee. Organization and logic design of digital systems. Course presents a structured design philosophy, emphasizing hardwired and microprogrammed control. Boolean algebra, hardware building blocks, circuit synthesis, microprogramming. 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, microprogramming, virtual storage. Relationship between computer architecture and system software. Credit not given for both CSCI-B 443 and B 543.
- CSCI-B 455 Principles of Machine Learning (3 cr.) P: MATH-M 211 and CSCI-C 211 or previous programming experience. 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 461 Database Concepts (3 cr.) CASE N&M P: CSCI-C 241and 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 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.) P: High school precalculus math. 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-C 211 Introduction to Computer Science (4 cr.) CASE N&M P: High school precalculus math. 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 P: High school precalculus math. 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 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.) P: Prerequisites vary by topic. Exploration of topics in computing and computer science. 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 (1.5 cr.) P: CSCI-C 200 or C 211 or CSCI-A 201. 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 295 Leadership and Learning (1-6 cr.) P: CSCI-C 200 or C 211 or A 201 or INFO-I 210. Students work within the community to foster interest, knowledge, and appreciation of the computing sciences by preparing and leading presentations and hands-on activities for children in middle and secondary schools. Not for major credit. May be repeated for a maximum of 6 credit hours.
- CSCI-C 311 Programming Languages (4 cr.) CASE N&M P: CSCI-C 212. C: CSCI-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. C: CSCI-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 335 Computer Structures (4 cr.) CASE N&M P: CSCI-C 212 and C 291. CSCI-C 241 C: CSCI-C 241. Lab fee. 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 and C 291. CSCI-C 241. C: CSCI-C 241. Lab fee. 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. CSCI-C 241. C: CSCI-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. CSCI-C 241. C: CSCI-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-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 not given for both CSCI-P 423 and P 523.
- CSCI-P 434 Distributed Systems (4 cr.) P: CSCI-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 not give for both CSCI-P 434 and B 534
- 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 not given for both CSCI-P 436 and P 536.
- 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 not given for both CSCI-P 438 and P 538.
- CSCI-P 442 Digital Systems (4 cr.) CASE N&M P: CSCI-B 441. Lab fee. 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-C 343. CSCI-B 461. C: CSCI-B 461. 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-C 343. CSCI-B 461. C: CSCI-B 461. 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.) P: Instructor’s permission. 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.) P: Instructor’s permission. 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. Credit not given for both CSCI-Y 395 and INFO-Y 395.
- CSCI-Y 399 Project in Professional Practice (3 cr.) P: CSCI-C 343 and one other computer science major course of 300 level or above and approval of department. 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.
- CSCI-Y 499 Honors Research (1-12 cr.) P: Approval of departmental honors committee. 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-H 498 Undergraduate Honors Seminar (1-3 cr.) P: 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.