Required courses:

CDS 120 Introduction to Programming with PythonThis course introduces the fundamentals of computer programming using the Python programming language. Topics include: variables, types, and assignment; iteration and conditional execution; functions, modules, and structured design; complex types and data structures. 3 credits. |

CDS 121 DataAn 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 file systems; relational databases; modern "noSQL" datastores. Students will be introduced to some elementary programming in a language like Python. 3 credits. |

CDS 241 Programming IIA 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 StructuresA 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, and 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 241; MAS 111 or MAS 161. 3 credits. |

CDS 343 Data Analysis and VisualizationThis course will explore how to design and create data visualizations based on the data available and the tasks to be achieved. This process includes data modeling, data processing (such as aggregation, filtering, and cleaning), mapping data attributes to graphical attributes, and strategic visual encoding based on known properties of visual perception as well as the task(s) at hand. Students will also learn to evaluate the effectiveness of visualization designs and conduct exploratory data analysis using visualization. Prerequisite: CDS 242. 3 credits. |

CDS 362 Distributed SystemsThis 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 112. 3 credits. |

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

MAS 111 Analysis IA calculus sequence for department majors and other students desiring a rigorous introduction to elementary calculus. Fulfills requirement: Quantitative Reasoning. Prerequisite: MAS 102 at LVC, or satisfactory score on the
math readiness test. This test is administered during New
Student Advising Days for incoming students or can be taken
by arrangement with the math department (717-867-6080)
Co-requisite: MAS 113. 4 credits. |

MAS 112 Analysis IISecond semester of a calculus sequence for department majors and other students desiring a rigorous introduction to elementary calculus. Fulfills requirement: Quantitative Reasoning. Prerequisite: MAS 111; Corequisite: MAS 114. 4 credits. |

MAS 113 Introduction to Mathematical Thinking IAn introduction to college mathematics for potential mathematical science majors. Corequisite: MAS 111. 1 credit. |

MAS 114 Introduction to Mathematical Thinking IISecond semester. Introduction to college mathematics for potential mathematical science majors. Corequisite: MAS 112. 1 credit. |

MAS 372 Statistical ModelingStudy of various modeling techniques including regression, decision trees, unsupervised learning, and time series methods with implementation in the computer language R. The course also provides an introduction to generalized linear models and generalized additive models. MAS 372 covers the material on SOA exam SRM - Statistics for Risk Modeling. Prerequisite: MAS 371. 3 credits. |

One from the following groups:

MAS 222 Linear AlgebraAn introduction to linear algebra including systems of equations, vectors spaces and linear transformations. Prerequisites: MAS 112 or MAS 261. 3 credits. |

MAS 270 Intermediate StatisticsA more advanced version of MAS 170 intended for students with some calculus background. Fulfills requirement: Quantitative Reasoning. Prerequisite: MAS 111 or MAS 161. A student may not receive
credit for both MAS 170 and MAS 270. 3 credits. |

or

MAS 261 Calculus IIIMultivariate calculus including partial differentiation, multiple integration, vector fields and vector functions. Prerequisites: MAS 112 or MAS 162. 3 credits. |

MAS 371 Statistical InferenceAn introduction to the mathematical foundations of probability and statistics, with a focus on estimation, sampling distributions, and hypothesis testing. This course is designed to meet the Society of Actuaries (SOA) standards for Validation through Educational Experience (VEE) in the area of mathematical statistics. Prerequisites: MAS 202; and ASC 281, FIN 283 or MAS 270. 3 credits. |

One lab from the language labs numbered 18X:

CDS 180 Language Lab: PythonA self-paced, project-based approach to learning a computer programming language. Several different languages are available in order to develop familiarity with different languages. Graded pass/fail. Prerequisite: CDS 142, or other computer programming
background and permission of the instructor. 1 credit. |

CDS 181 Language Lab: C++A self-paced, project-based approach to learning a computer programming language. Several different languages are available in order to develop familiarity with different languages. Graded pass/fail. Prerequisite: CDS 142, or other computer programming
background and permission of the instructor. 1 credit. |

CDS 182 Language Lab: C#A self-paced, project-based approach to learning a computer programming language. Several different languages are available in order to develop familiarity with different languages. Graded pass/fail. Prerequisite: CDS 142, or other computer programming
background and permission of the instructor. 1 credit. |

Plus one additional language lab from labs numbered 18X and the following:

CDS 180 Language Lab: PythonA self-paced, project-based approach to learning a computer programming language. Several different languages are available in order to develop familiarity with different languages. Graded pass/fail. Prerequisite: CDS 142, or other computer programming
background and permission of the instructor. 1 credit. |

CDS 181 Language Lab: C++A self-paced, project-based approach to learning a computer programming language. Several different languages are available in order to develop familiarity with different languages. Graded pass/fail. Prerequisite: CDS 142, or other computer programming
background and permission of the instructor. 1 credit. |

CDS 281 Software ProcessesA 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 IStudents 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 385 Computational Problem Solving IIStudents 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, CSC 232, or by permission of the
instructor. 1 credit. |

Two additional CDS courses (6 credits) at the 300 level or higher.