Computer Science Principles
Introduction to the "big ideas" of computer science: creativity, abstraction, data and information, algorithms, programming, and the internet. Students will develop their communication, teamwork, and problem-solving skills. Includes an exploration of the global impacts of computing. Not open to students with prior credit in 220 or the equivalent. Does not count toward the major or minor. Partially satisfies the SM CCR. Fee charged.
Computer Science is one of the most versatile tools for scientists. This course will use real science problems from physical and biological sciences to teach students how to build computational models to explain these problems. Focus is on the use of modeling as part of the scientific process to lead to further discovery. A working knowledge of mathematics and science is expected. Offered alternate years.
Survey of Data Science
A survey of the main techniques and applications foundational to Data Science, including the "data science process", naive Bayes and other classifiers, regression analysis, and the use of separate data sets for the training, validation, and testing of possible predictive relationships. Emphasis on case studies and concrete examples. Prerequisite: Mat217 or Eco257.
Fundamentals of Computer Science
An introduction to problem-solving, program design, testing methodology and structure of programming languages. Students will learn to program in a high-level programming language to solve problems from a wide range of computer science topics. Partially satisfies the SM CCR. Includes lab Fee charged.
A study of the implementation and evaluation of advanced data structures. Data structures include linked lists, stacks, queues, trees, graphs and tables with the use of recursive algorithms to perform operations. Includes lab. Prerequisites: 220. Partially satisfies the SM CCR. Fee Charged.
A systematic study of creating and evaluating algorithms, the process of solving problems. Brute force, divide-and-conquer, and problem transformation techniques are used to solve problems. Big Theta notation, best-average- worse case analysis, and notions of NP completeness are used to evaluate problems. Recommended by end of junior year. Prerequisites: 220 and one of Mat 243 or Mat 220. Lab fee.
Data Wrangling and Management
An overview of the fundamental principles and techniques related to the collection, storage and management of information; SQL/NoSQL fundamentals; data scraping, querying and aggregation; data manipulation and analysis. Not open to students with prior credit in 328. Prerequisite: 220.
Fundamentals of the hardware and software infrastructure upon which applications are constructed, including data representations, Boolean algebra and digital logic, assemblers and I/O implementation, instruction sets, memory organization, system performance evaluation and benchmarks. Includes an introduction to system software, parallel and distributed architectures, and computer networking. Prerequisites: 220; MAT 101, MAT 113, MAT 121 (or above), placement at the Ready for Precalculus level or above, or concurrent enrollment in MAT 101. Not open to students with previous credit for CS 234.
Introduction to Robotics
Introduction to robotics and topics in artificial intelligence relevant to robotics through a combination of lectures and labs. Lectures introduce concepts, such as paradigms for organizing intelligence in robots and different sensing techniques. In labs, students learn an open-source robotics platform, such as Arduino, with the goal of building a working reactive robot by the end of the course. Offered alternate years. Prerequisite: 223. Fee Charged.
Topics in Software Development
Introduction to the various facets of software development such as modular programming, design patterns, source code version control, test-driven development and documentation. Prerequisite: CS 223. May be repeated for credit with permission of the instructor.
Software Development Practicum
An exploration of practices and skills essential to software development: object-oriented-programming fundamentals; class design principles; design patterns; user stories; agile development; test-driven development; coding practices. Students will employ what they learn in the development and delivery of a high-quality software product. Includes lab. Prerequisite: 223.
Mobile Application Development
Introduction to developing apps for Android mobile devices. Includes general development topics such as modular programming, design patterns,version control, automated testing, and documentation. Android-specific topics include: activities, fragments, and layouts; app navigation; life-cycle methods; connecting to databases; using built-in services. Prerequisite: 223.
Web Application Development
Introduction to the principles of functional programming, including higher-order functions, recursive definitions, list processing, and pattern matching. Offered alternate years. Prerequisite: CS 223.
Advanced Software Development
Exploration of advanced topics in software development and delivery, including advanced design patterns, acceptance testing, software configuration, release management and continuous integration and delivery. Includes the completion and delivery of a high-quality software product. Prerequisite: 321.
Data Management and Web Services
An overview of the fundamental principles and techniques related to the collection, storage, management, and delivery of information: SQL/NoSQL fundamentals; data scraping, querying and aggregation; transport protocols; web services. Not opent to students with prior credit in 229. Prequisite: 223
Database with Web Applications
Introduction to fundamental concepts of database management systems, including database design, data definition languages, data manipulation languages, and database system implementation. Particular emphasis will be placed on implementation of web-based applications that make use of databases. Offered alternate years. Prerequisite: 223.
Theory of Computation
A mathematical investigation of the fundamental capabilities and limitations of computers. Finite automata, Turing machines, regular and context-free languages, computability and solvability, the halting problem, Church's thesis. Offered alternate years. Prerequisite: 225.
A study of modern communication systems, predominantly the Internet. Topics include: the client-server paradigm, use of existing protocols, creationof new protocols, P2P applications, routing algorithms, distributed sharing of resources and communicating in the face of unreliable networks. Offered alternate years. Prerequisite: 223 and 231.
Theory of operating systems, including memory management, concurrent processes, scheduling algorithms, device drivers, and file systems. Offered alternate years. Prerequisite: 223 or 234 (preferably both).
Knowledge representation, natural language processing, models of reasoning and learning, heuristic search methods, connectionism, and robotics. Offered alternate years. Prerequisite: 223 and 225.
Seminar course in which students are aided in developing, writing, presenting,and managing an individual software or research project. Students present their project proposals in both written and oral form. Good software development practices, such as version control, and soft skills, suchas effective communication, are emphasized. Prerequisite: senior standing; computer science major; and 223. Satisfies the W2 ACE.