Courses in Computer and Data Science

CDS 121. Data. An introduction to the principles, techniques, and tools used in the creation, organization, and manipulation of data in a modern computing environment. Topics will include: computer memory organization and binary data formats; files and filesystems; relational databases; modern "noSQL" datastores. Students will be introduced to some elementary programming in a language like Python.  3 credits.

CDS 142. Programming I. This course introduces the fundamentals of computer programming using the Java programming language. Control structures, types and the type system, and the design of methods and classes will be considered.  3 credits.

CDS 180. Language Lab. A self-paced, project-based approach to learning a computer programming language. Several different languages are available; students can take the course multiple times in order to develop familiarity with different languages.  Graded pass/fail. This course may be repeated for credit as topic changes. Prerequisite: CDS 121, or other computer programming background and permission of the instructor. 1 credit.

CDS 241. Programming II. A continuation of CDS 142, students will extend and deepen their understanding of programming using Java. The course will cover three main topics: Object-oriented software organization; design and implementation of elementary data structures and algorithms; the mathematical tools and techniques required for complexity analysis.  Prerequisite: CDS 142, or by permission of the instructor. 3 credits.

CDS 242. Algorithms and Data Structures. A study of the design, analysis, and application of data structures and algorithms. Trees, graphs, heaps, hash tables, and other structures will be considered. Several mathematical techniques (e.g., complexity analysis, recurrence relations, induction) will be studied and applied to understanding these algorithms and structures. The impact of modern computer hardware, especially caches and parallelism on the design and performance of data structures and algorithms will be considered.  Prerequisite: CDS 142; MAS 111 or 161. 3 credits.

CDS 280. Introductory Data Analysis Lab. Projects in access to data and its analysis and manipulation, using the Java programming language.  Prerequisite: CDS 121 and CDS 142. 1 credit.

CDS 281. Software Processes. A primer in managing the software development process, from the initial creation of a project proposal to the organization of the development team and its workflow. Will include an overview of an agile process such as Scrum.  Graded pass/fail. Prerequisite: CDS 142, or by permission of the instructor. 1 credit.

CDS 285. Computational Problem Solving I. Students will sharpen their skill at applying computational problem-solving techniques (particularly the design of data structures and algorithms) in the context of competitive programming.  Graded pass/fail. Prerequisite: CDS 142, or by permission of the instructor. 1 credit.

CDS 341. Machine Learning and Data Analytics I. Concepts and practice in extracting knowledge from data. We use data to train a model to predict, to classify, and to discover associations. Performance metrics are used to assess a model, and to construct better models.  Prerequisite: CDS 142, 241; MAS 270. 3 credits.

CDS 342. Machine Learning and Data Analytics II. We build on the fundamental concepts and methods for machine learning and data analytics covered in CDS 341. Topics that might be included in CDS 342 are dimension reduction, unsupervised pattern finding, cluster analysis, logistic regression, and discriminant analysis.  Prerequisite: CDS 341 and MAS 222. 3 credits.

CDS 361. Concurrent and Parallel Programming. A survey of concurrency and parallelism in modern software design. Threads and locks and other concurrency primitives. Thread pools, task-based parallelism, task scheduling algorithms; hardware parallelism, GPUs.  Prerequisite: CDS 242 and MAS 222. 3 credits.

CDS 362. Distributed Systems. This course examines the design of modern, distributed software applications. Client/Server models (from RPC designs to modern REST-based architectures) will be the focus, though other distribution models will be considered. Scalability, security, and other fundamental issues will be addressed. Students will design and implement a service and a mobile front end to that service as a semester-long team project.  Prerequisite: CDS 242 and MAS 222. 3 credits.

CDS 385. Computational Problem Solving II. Students will sharpen their skill at applying computational problem-solving techniques (particularly the design of data structures and algorithms) in the context of competitive programming. This course considers more advanced data structures and algorithmic techniques than CDS 285.  Graded pass/fail. Prerequisite: CDS 242, or by permission of the instructor. 1 credit.

CDS 441. Operating Systems. Theory and practice of modern operating systems. Topics include memory management, file systems, scheduling, concurrency, distributed processes, and security.  Prerequisites: CSC 282 and MAS 251. 3 credits.

CDS 442. Networks. Network design and implementation. Topics include layered network design, types of hardware, low-level protocols, packets, frames, routing, security, and so on.  Prerequisites: CSC 232 and MAS 251. 3 credits.

CDS 448. Databases. The theory, structure and implementation, and application of modern database systems.  Prerequisite: CSC 232. 3 credits.

CDS 452. Artificial Intelligence. An introduction to the field of AI. Topics include expert systems, goal-seeking algorithms, neural networks, genetic algorithms, computer vision, language recognition.  Prerequisites: CSC 232 and MAS 251. 3 credits.

CDS 481. Advanced Topics in Computer Science I. Topics to be selected from current areas of interest and research in computer science.  This course may be repeated for credit as topic changes. Prerequisites: CSC 232, MAS 251. 3 credits.

CDS 482. Advanced Topics in Computer Science II. Topics to be selected from current areas of interest and research in computer science.  This course may be repeated for credit as topic changes. Prerequisites: CSC 232 and MAS 251. 3 credits.

CDS 499. Professional Experience. This course tracks the completion of Professional Experiences by students in the Computer and Data Science major.  Prerequisite: Must be junior standing. 0 credits.