Computational Sciences Major
Computational sciences provide the scientific foundations for making sense of natural, human-mediated and social phenomena through analytics, computational methods and modeling.
In an age of ubiquitous — often overwhelming — data, the ability to harness that data to reflect, reach out and make better decisions is increasingly crucial. The Computational Sciences major prepares students to be analytics-driven and logical decision makers, innovators, and leaders.
In their first year, Computational Sciences majors complete their Cornerstone Courses.
In their second year, Computational Sciences majors enroll in core courses that provide the foundation for the Computational Sciences concentrations. They also take electives from core courses offered in other majors.
CS110 / Problem Solving with Data Structures and Algorithms
Apply core concepts in design and analysis of algorithms, data structures, and computational problem-solving techniques to address complex problems. Hashing, searching, sorting, tree algorithms, dynamic programming, greedy algorithms, divide and conquer, backtracking, random number generation, and randomized algorithms are examples of algorithms you will learn to exploit to solve problems ranging from logistics to route optimization to DNA sequencing.
CS111 / Single and Multivariable Calculus
Learn to utilize principles of single and multivariable calculus to solve relevant problems from across STEM. Traditional calculus courses focus on the techniques needed to perform complex computations by hand, and evaluate students primarily on their ability to do so quickly. This course takes a different approach by shifting the focus to applying foundational calculus concepts to analyze and solve problems in practical contexts while building the facility to take full advantage of technologies such as Sage to perform complex computations. In addition to honing skills from critical and creative thinking, an emphasis is placed on effective collaborative problem-solving and communication of technical processes and results to appropriate audiences.
CS113 / Theory and Applications of Linear Algebra
This course develops the tools necessary for the analysis of linear systems. The emphases are both on abstract notions such as vectors spaces, linear maps between them and their matrix representations, and concrete applications such as Markov chains and graphical network analysis. Students apply their knowledge to explore a wide variety of problems such as Page Rank, least squares fitting, and traffic modeling.
CS114 / Probability and Statistics and the Structure of Randomness
When can you find patterns in seemingly random noise? Or determine when an observed pattern is likely due to chance? This course focuses on the concepts from probability and statistics used to extract meaning from data. In addition to building a strong, theoretical foundation, students learn how to apply these tools to understand real-world scenarios. Formal topics include Sample spaces, conditional probability and independence, Bayes’ theorem, discrete and continuous random variables, joint distributions, the law of large numbers as well as the central limit theorem among others. These techniques are then used in applications such as statistical learning, linear regression, simulation, maximum likelihood and least squares.
In their third year, Computational Sciences majors select a concentration, begin taking courses within it and begin work on their capstone courses. They also take electives chosen from other Minerva courses (other concentration courses in Computational Sciences, core and concentration courses in other colleges). Computational Sciences offers concentrations shown in the table below.
In the fourth year, Computational Sciences majors enroll in additional electives chosen from Minerva’s course offerings within or outside the major. Additionally, they take senior tutorials in the major, and finish their capstone courses.
|Computational Theory and Analysis||Contemporary Knowledge Discovery||Applied Problem Solving|
|Computer Science and Artificial Intelligence||CS142 / Theory of Computation||CS152 / Theory and Applications of Artificial Intelligence||CS162 / Software Engineering: Building Powerful Applications|
|Mathematics||CS144 / Real Analysis||CS154 / Analytical and Numerical Methods in Differential Equations||CS164 / Optimization Methods|
|Data Science and Statistics||CS146 / Computational Methods for Bayesian Statistics||CS156 / Finding Patterns in Data with Machine Learning||CS166 / Modeling and Analysis of Complex Systems|
Each row and each column of the matrix represent a different concentration, as noted above.
CS142 / Theory of Computation
Students learn about models of computation that provide the theoretical basis for modern computer science. Topics include deterministic and nondeterministic finite state machines, Turing machines, formal language theory, computational complexity and the classification of algorithms. Students practice building a variety of automata and Turing machines using Python. What are the language grammars? and what role does a grammar plays in the way we analyze problems, solve problems, communicate with the computer, and even analyze natural languages? What makes a problem difficult to solve? Are some problems intrinsically harder than others, or is it that just because we have not yet discovered more efficient solutions? What, if any, are the limits of what can be solved with a computer? The techniques presented in this course shed light on why some computational problems are hard or even tractable. Students also gain experience communicating mathematical ideas in a rigorous fashion.
CS144 / Real Analysis
Students learn how to read, write, and evaluate rigorous mathematical arguments. These skills are practiced on foundational material that forms a bridge to topics in advanced mathematics—both applied and pure. Subtopics in modern algebra and real analysis are chosen to illustrate the fundamental concepts of careful bounding, counting, and the application of equivalence classes.
CS146 / Computational Methods for Bayesian Statistics
Learn to apply Bayesian inference which is the mathematical framework for using observed data to update the information we have about a system. The course proceeds from the fundamentals of probability theory and Bayesian inference to the data modeling process, covering various real-world scenarios from sports, medicine, vehicle tracking, social sciences, and more. The second half of the course covers approximate methods for automating inference in the form of variational inference (approximations using functions) and Monte Carlo methods (approximations using random samples). These methods allow us to work with large models containing many unknown variables and large data sets.
CS152 / Theory and Applications of Artificial Intelligence
Apply methods and algorithms from Artificial Intelligence (AI) — such as propositional logic, logic programming, predicate calculus, and computational reasoning — to a diverse range of applications from robot navigation to restaurant selection with expert systems. Discover AI in action through an exploration of robotics, and gain an appreciation of its convergence towards modern machine learning methods.
CS154 / Analytical and Numerical Methods in Differential Equations
Methods are explored to interpolate data, solve linear and non-linear systems of equations, and model dynamical systems with the use of ordinary and partial differential equations. Additionally, Fourier Analysis is applied to model and process signals. Numerical implementations of the mathematical methods are developed using MATLAB or Octave.
CS156 / Finding Patterns in Data with Machine Learning
Students learn to apply core machine learning techniques — such as classification, perceptron, neural networks, support vector machines, hidden Markov models, and nonparametric models of clustering — as well as fundamental concepts such as feature selection, cross-validation and over-fitting. Students program machine learning algorithms to make sense of a wide range of data, such as genetic data, data used to perform customer segmentation or data used to predict the outcome of elections.
CS162 / Software Engineering: Building Powerful Applications
This course is organized around the principle that the only way to learn software development is to develop software. Work together as a team to develop a significant web application. Examples include a social media application or a distributed chat system. You will have the opportunity to apply and experience all aspects of software development, including requirements analysis, design, planning, implementation, testing, and deployment.
CS164 / Optimization Methods
Learn to use and analyze optimization techniques such as linear, quadratic, semidefinite and mixed-integer programming. Explore optimization algorithms such as Newton’s method, interior point methods and branch and bound methods.
CS166 / Modeling and Analysis of Complex Systems
Learn how to apply advanced modeling techniques to analyze and predict the behavior of social, physical and economic systems. You will learn from specific examples applied to portfolio management, traffic flow management, and analyzing social networks. The course covers three modeling frameworks — cellular automata for modeling interactions on grids of cells, networks for more general interactions between nodes in a graph, and Monte Carlo simulations showing how we can use simulation to generate random numbers and how we can use random numbers to drive simulations of complex phenomena. The course covers the theoretical (mathematical) and practical (implementation) aspects of each of the three frameworks.
In their fourth year, Computational Sciences majors finish their Capstone Courses.