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 given for only one of CSCI-A 112 or 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 given for only one of CSCI-A 114 or 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 given for only one of CSCI-A 201 or 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.
- 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-2-6 cr.) Exploration of topics in computing. Common topics include tools for power users. Prerequisites vary by topic. Lecture and laboratory format. Three A 290 courses will count as one of seven advanced elective courses for majors. 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. Credit given for only one of CSCI-A 247 or A 338.
- 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-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 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 or H 211.
- 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-C 211 or H 211.
- CSCI-C 212 Introduction to Software Systems (4 cr.) CASE N&M P: CSCI-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 or H 212.
- CSCI-H 212 Introduction to Software Systems, Honors (4 cr.) CASE N&M P: CSCI-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-C 212 or H 212.
- CSCI-C 241 Discrete Structures for Computer Science (3 cr.) CASE N&M P: CSCI-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 given for only one of CSCI-C 241 or H 241.
- CSCI-H 241 Discrete Structures for Computer Science, Honors (3 cr.) CASE N&M P: CSCI-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 given for only one of CSCI-C 241 or H 241.
- CSCI-C 290 Tools in Computing (1-3-6 cr.) P: Prerequisites vary by topic. Exploration of topics in computing and computer science. 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-C 291 System Programming with C and Unix (1.5 cr.) P: CSCI-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 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 or H 311.
- 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-C 311 or H 311.
- 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. 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 given for only one of CSCI-C 335 or H 335.
- CSCI-H 335 Computer Structures, Honors (4 cr.) CASE N&M P: CSCI-C 212. 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 given for only one of CSCI-C 335 or H 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 given for only one of CSCI-C 343 or 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 given for only one of CSCI-C 343 or H 343.
- CSCI-B 351 Introduction to Artificial Intelligence and Computer Simulation (3 cr.) CASE N&M P: CSCI-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 given for only one of CSCI-B 351 or 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 given for only one of CSCI-B 355 or COGS-Q 360.
- 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 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-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.
- 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.
- 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.
- CSCI-P 434 Distributed Systems (4 cr.) P: CSCI-C 343.
Principles of distributed systems including system 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.
- 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.
- 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 or P 538.
- 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 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.
- 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.
- 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.
- 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 given for only one of CSCI-B 461 or B 561.
- 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. Lab fee. 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.
- 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. Lab fee. 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.
- 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 given for only one of CSCI-B 481 or B 581.
- CSCI-B 490 Seminar in Computer Science (1-3-6 cr.) Special topics in computer science. May be repeated for a maximum of 6 credit hours.
- CSCI-H 498 Honors Seminar (1-3-6 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.