Brandeis UniversityWebsiteAcademic Catalog
Computer ScienceDepartment Website
BS Degree in Computer Sciencesource 1
CS Courses
- Introduction to Problem Solving in PythonCOSI 10a (4)introCOSI 10a: Introduction to Problem Solving in Python
Introduces computer programming and related computer science principles. Through programming, students will develop fundamental skills such as abstract reasoning and problem solving. Students will master programming techniques using the Python programming language and will develop good program design methodology resulting in correct, robust, and maintainable programs. Usually offered every semester.
- Advanced Programming Techniques in JavaCOSI 12b (4)introCOSI 12b: Advanced Programming Techniques in Java
Studies advanced programming concepts and techniques utilizing the Java programming language. The course covers software engineering concepts, object-oriented design, design patterns and professional best practices. This is a required foundation course that will prepare you for more advanced courses, new programming languages, and frameworks. Usually offered every year.
- Data Structures and the Fundamentals of ComputingCOSI 21a (4)algsCOSI 21a: Data Structures and the Fundamentals of Computing
Focuses on the design and analysis of algorithms and the use of data structures. Through the introduction of the most widely used data structures employed in solving commonly encountered problems. Students will learn different ways to organize data for easy access and efficient manipulation. The course also covers algorithms to solve classic problems, as well as algorithm design strategies; and computational complexity theory for studying the efficiency of the algorithms. Usually offered every year.
- Effective Communication for Computer ScientistsCOSI 45a (2)communicationCOSI 45a: Effective Communication for Computer Scientists
Teaches the basics of good oral communication and presentation, such as structuring a presentation, body language, eye contact, pace and appropriateness for the audience. It will cover, with practice, a range of speaking engagements majors might meet in academia and industry including: presentation of a research paper, software architecture proposal, business elevator pitch, research funding proposal, and so on. Students will present a project already created for a 100-level COSI elective. They will give the presentation in class, receive feedback based on the practices taught and then have a chance to give the presentation a second time. Usually offered every semester.
- Structure and Interpretation of Computer ProgramsCOSI 121b (4)introCOSI 121b: Structure and Interpretation of Computer Programs
An introduction to idioms of programming methodology, and to how programming languages work. Principles of functional programming, data structures and data abstraction; state, imperative and object-oriented programming; lazy data structures; how an interpreter works; metalinguistic abstraction and programming language design; syntax analysis, lexical addressing, continuations and explicit control; continuation-passing style, metacircular and register-machine compilers. Usually offered every year.
- Introduction to the Theory of ComputationCOSI 130a (4)theoryCOSI 130a: Introduction to the Theory of Computation
Introduces topics in the theory of computation, including: finite automata and regular languages, pushdown automata and context-free languages, context-sensitive languages and Type 0 languages, Turing machines and Church's thesis, the halting problem and undecidability, and introduction to NP and PSPACE complete problems. Usually offered every year.
- 6 × CS electives
Math/Stat Courses
- Introduction to Probability and StatisticsororororMATH 8a (4)mathMATH 8a: Introduction to Probability and Statistics
Discrete probability spaces, random variables, expectation, variance, approximation by the normal curve, sample mean and variance, and confidence intervals. Does not require calculus; only high school algebra and graphing of functions. Usually offered every semester.
- Discrete StructuresCOSI 29a (4)mathCOSI 29a: Discrete Structures
Covers topics in discrete mathematics with applications within computer science. Some of the topics to be covered include graphs and matrices; principles of logic and induction; number theory; counting, summation, and recurrence relations; discrete probability. Usually offered every year.
Other Courses
- 9 × Free Elective
- 3 × Wellness course
Objectives
- The undergraduate program in computer science teaches the theoretical fundamentals and practical aspects of computing, preparing students for creative jobs in the computer industry and/or for graduate school. In addition, our curriculum is a stimulating and useful preparation for a number of indirectly related professions, such as law, medicine, and economics.
Skills
- Majors in computer science will develop a number of skills.
- Understanding the elements of computational thinking.
- Understanding the trade-off involved in design choices.
- Identifying and analyzing criteria and specifications appropriate to specific problems, and planning strategies for their solution.
- Analyzing the extent to which a computer-based system meets the criteria defined for its current use and future development.
- Deploying appropriate theory, practices, and tools for the specification, design, implementation, and maintenance as well as the evaluation of computer-based systems.
- Specifying, designing, and implementing computer-based systems.
- Evaluating systems in terms of general quality attributes and possible tradeoffs presented within the given problem.
- Applying the principles of effective information management, information organization, and information-retrieval skills to information of various kinds, including text, images, sound, and video.
- Awareness of security issues. Exposure to issues associated with access, encryption, and networking.
- Applying the principles of human-computer interaction to the evaluation and construction of a wide range of materials including user interfaces, web pages, multimedia systems and mobile systems.
- Learning to deploy effectively the tools used for the construction and documentation of software, with particular emphasis on understanding the whole process involved in using computers to solve practical problems.
- Awareness of the existence of publicly available software (such as APIs or open source materials). Effective engagement in open-source projects. Exposure to effective software reuse.
- Operating computing equipment and software systems effectively.
- Communication. Making succinct presentations to a range of audiences about technical problems and their solutions. This may involve face-to-face, written, or electronic communication.
- Teamwork. Learning to work effectively as a member of a disciplinary or interdisciplinary development team.
- Numeracy. Understanding and explaining the quantitative dimensions of a problem.
- Self-management. Managing one's own learning and development, including time management and organizational skills
- Professional development. Learning the skills necessary to continue one's own professional development after graduation.
Knowledge
- Discrete structures
- Programming fundamentals
- Graphics and visual computing
- Algorithms and complexity
- Intelligent systems and Machine Learning
- Data Compression
- Computational Linguistics
- Architecture and organization Bioinformatics
- Operating systems, concurrency, and security
- Artificial life
- Distributed Computing and Networking Data management
- Programming languages Software engineering (exposure to different programming paradigms)
- Numerical methods, simulation and modeling
- Human-Computer Interaction
- Entrepreneurial Computer Science
- Computer Supported Cooperative Work Internet and Society
- Social Justice
History of the Major
2024 | |
2023 | |
2022 | |
2021 | |
2020 | |
2019 | Replace COSI 11a (Programming in Java) → COSI 10a (Introduction to Problem Solving in Python). Declare COSI 10a as prerequisite to the major, rather than part of the major. Replace 5 CS Electives → 6 CS Electives. Add 3 more alternatives to Math 8a (Introduction to Probability and Statistics) and Math 36a (Probability). |
2018 | |
2017 |