Undergraduate Course Descriptions
101. Overview of Computer Science
(4h) Lecture and laboratory. Introduction to the organization and use of computers. Topics include computer architecture, systems, theory, logic, programming, the Internet, multimedia, and ethical, legal, and social issues. Does not count toward the computer science major or minor. Lab—two hours. (D)
111. Introduction to Computer Science
(4h) Lecture and laboratory. Introduction to the basic concepts of computer programming and algorithmic problem solving for students with little or no programming experience. Recommended as the first course for students considering a major or minor in computer science, also appropriate for students who want computing experience applicable to other disciplines. The programming language used and the focus will vary, as listed below. May not be repeated for credit. Lab—2 hours. (D)
a. general purpose computing
b. multimedia and game computing
c. scientific and mathematical computing
d. mobile computing
e. business applications of computing
112. Fundamentals of Computer Science
(4h) Lecture and laboratory. Problem solving and program construction using top-down design, data abstraction, and object-oriented programming. Linear data structures, recursion, and software development tools are introduced. Lab—two hours. P—CSC 111 or POI. (D)
165. Problem Solving Seminar
(1h) Weekly seminar designed for students to develop their problem solving skills designing and implementing software. Does not count toward the computer science major or minor. May be taken twice. Pass/Fail. P—CSC 112.
191. Special Topics
(1-3h) Topics in computer science that are not covered in regular courses or that give special practice in skills used in other courses. Not to be counted toward the bachelor of science in computer science. May be taken more than once if the topic changes.
192. STEM Incubator.
(1h) An engaging and relevant introduction to STEM (science, technology, engineering, and mathematics) through creative exploration, collaboration, and computational problem-solving. Pass/Fail. POI. May be repeated once.
192h. Honors STEM Incubator.
(1h) Leadership role in developing STEM (science, technology, engineering, and mathematics) ideas and applications through scientific exploration, creative collaboration, and computational problem-solving. For students with some programming experience. Pass/Fail. POI.
193. Independent Study
(1-3h) Independent study directed by a faculty adviser, not to be counted toward the bachelor of science in computer science. By prearrangement.
211. Computer Organization
(4h) Lecture and laboratory. Computer organization from the perspective of instructions, including the central processor, busses, input and output units, and memory units. Weekly two-hour laboratory covers combinational logic, loaders and linkers, assembly language, address computation, and other architecture-related functions. Lab—two hours. P—CSC 111 and MTH 117. (D)
221. Data Structures and Algorithms I
(3h) Study, analysis, and implementation of abstract data structures such as stacks, queues, trees, and graphs. Complexity analysis of algorithms that operate upon these structures. P—CSC 112. P or C—MTH 117. (D)
222. Data Structures and Algorithms II
(3h) Study of algorithms, algorithm design strategies, and the derivation of time complexity bounds. Case studies illustrate greedy algorithms, divide and conquer, backtracking, and dynamic programming techniques. An introduction to the classes P, NP, NP-complete, and Turing decidability is included. P–CSC 221 and MTH 111 or 112. (QR)
231. Programming Languages
(4h) Lecture and laboratory. Comparative study of programming language paradigms, including imperative languages, functional programming, logic programming, and object-oriented programming. Syntax, semantics, parsing, grammars, and issues in language design are covered. Lab—two hours. P—CSC 112 and MTH 117.
241. Computer Systems
(4h) Lecture and laboratory. Introduction to concepts of operating systems and networks including processor and memory management, concurrency, and protocol-independent data communications. Lab—two hours. P—CSC 112 and MTH 117.
311. Computer Architecture
(3h) In-depth study of computer system and architecture design. Topics include processor design, memory hierarchy, external storage devices, interface design, and parallel architectures. P—CSC 211.
321. Database Management Systems
(3h) Introduction to large-scale database management systems. Topics include data independence, database models, query languages, security, integrity, and concurrency. P—CSC 221.
322. Data Management and Analytics.
(3h) Management, analysis, and visualization of large-scale data sets. Topics include key-value databases, distributed file systems, map-reduce techniques,
similarity measures, link analysis, and clustering. P—CSC 321.
331.Object-Oriented Software Engineering
(3h) Study of software design and implementation from an object-oriented perspective, covering abstraction, encapsulation, data protection, inheritance, composition, polymorphism, and dynamic vs. static binding. Students practice software engineering principles through team projects. P—CSC 221.
333. Principles of Compiler Design
(3h) Study of techniques for compiling computer languages including scanning, parsing, translating, and generating and optimizing code. P—CSC 211 and 231.
341. Operating Systems
(3h) Study of the different modules that compose a modern operating system. In-depth study of concurrency, processor management, memory management, file management, and security. P—CSC 112 and 241
343. Internet Protocols
(3h) Study of wide area connectivity through interconnection networks. Emphasis is on Internet architecture and protocols. Topics include addressing, routing, multicasting, quality of service, and network security. P—CSC 112 and 241.
346. Parallel Computation
(3h) Study of hardware and software issues in parallel computing. Topics include a comparison of parallel architectures and network topologies, and an introduction to parallel algorithms, languages, programming, and applications. P—CSC 221; or POI.
348. Computer Security
(3h) Introduction to computer security concepts and associated theory. Detailed coverage of the core concepts of access control, cryptography, trusted computing bases, digital signatures, authentication, network security, and secure architectures. Legal issues, security policies, risk management, certification and accreditation are covered in their supporting roles. Students will learn to analyze, design, and build secure systems of moderate complexity. P—CSC 241.
352. Numerical Linear Algebra
(3h) Numerical methods for solving matrix and related problems in science and engineering using a high-level matrix-oriented language such as MATLAB. Topics include systems of linear equations, least squares methods, and eigenvalue computations. Special emphasis given to applications. Also listed as MTH 326. P—MTH 112; and MTH 121, 205, or 206. (D)
355. Introduction to Numerical Methods
(3h) Numerical computations on modern computer architectures; floating-point arithmetic and round-off error. Programming in a scientific/engineering language such as MATLAB, C, or FORTRAN. Algorithms and computer techniques for the solution of problems such as roots of functions, approximation, integration, systems of linear equations, and least squares methods. Also listed as MTH 355. P—MTH 112, and MTH 121, 205 or 206.
361. Digital Media
(3h) Introduction to digital media covering sampling and quantization, resolution, color representation, multimedia file formats, data encoding and compression, multimedia network issues, streaming data, and multimedia programming. P—CSC 112 and MTH 111.
363. Computer Graphics
(3h) Study of software and hardware techniques in computer graphics. Topics include line and polygon drawing, hidden line and surface techniques, transformations, and ray tracing. P—CSC 221 and MTH 121, 205, or 206.
365. Image Processing Fundamentals
(3h) Study of the basic theory and algorithms for image enhancement, restoration, segmentation, and analysis. P—CSC 112 and MTH 121, 205, or 206.
371. Artificial Intelligence
(3h) Introduction to problems in artificial intelligence. Knowledge representation and heuristic search in areas such as planning, machine learning, pattern recognition, and theorem proving. P—CSC 221 or POI.
Introduction to bioinformatics and computing techniques essential to current biomedical research. Topics include genome and protein sequence and protein structure databases, algorithms for sequence and structure analysis, and computer architecture and environment considerations. Emphasizes interdisciplinary interaction and communication and includes a project that may use software engineering and project management protocols and requires working a part of an interdisciplinary team. Also listed as PHY 385. P—CSC 221 or POI.
387. Computational Systems Biology
(3h) Introduction of concepts and development of skills necessary for comprehension of modern systems biology research problems, including both biological and computational aspects. Topics may include microarrays, protein interaction networks, large-scale proteomics experiments, and algorithms and computational approaches for modeling, storing, and analyzing the resulting data sets. Emphasizes interdisciplinary interaction and communication, includes a project that may use software engineering and project management protocols, and requires working as part of an interdisciplinary team. P—CSC 221 or POI.
391. Selected Topics
(1-3h) Topics in computer science that are not studied in regular courses or which further examine topics covered in regular courses. P—POI.
393. Individual Study
(1-3h) Independent study directed by a faculty adviser. By prearrangement. No more than three hours may be counted toward a computer science major
399. Computer Science Mastery Exam.
(0h) Evaluation of student mastery of core topics in the computer science discipline through standardized testing. Taken during the senior year. Pass/Fail.