Computer Science

  • CAS CS 501: Computer Science Practicum
    Various applications of computer science that vary semester to semester. Please contact the CAS Computer Science Department for detailed descriptions.
  • CAS CS 505: Introduction to Natural Language Processing
    Undergraduate Prerequisites: (CASCS365) - Natural language processing (NLP) is a field of AI which aims to equip computers with the ability to intelligently process natural (human) language. This course explores statistical and machine learning techniques for the automatic analysis of natural language data.
  • CAS CS 506: Data Science Tools and Applications
    Undergraduate Prerequisites: CAS CS 108 or CAS CS 111; CAS CS 132 or CAS MA 242 or CAS MA 442. CAS CS 112 is recommended. - Covers practical skills in working with data and introduces a wide range of techniques that are commonly used in the analysis of data, such as clustering, classification, regression, and network analysis. Emphasizes hands-on application of methods via programming. Effective Fall 2019, this course fulfills a single unit in each of the following BU Hub areas: Research and Information Literacy, Teamwork/Collaboration.
    • Research and Information Literacy
    • Teamwork/Collaboration
  • CAS CS 511: Formal Methods 1
    Undergraduate Prerequisites: (CASCS320 OR CASCS330 OR CASCS350) - Introduction to formal specification, analysis, and verification of computer system behavior. Topics include formal logical reasoning about computer programs and systems, automated and semi-automated verification, and algorithmic methodologies for ascertaining that a software system satisfies its formally specified properties. Cannot be taken for credit in addition to the course with the same number formerly entitled "Object-Oriented Software Principles."
  • CAS CS 516: Software Foundations via Formal Languages
    Undergraduate Prerequisites: (CASCS320 & CASCS330) or equivalent courses approved by the instructor. - Study of the hierarchy of formal languages with a focus on algorithms on the formalisms. Experimentation with these algorithms using a computer toolset. Applications of these algorithms to compiler construction, implementation of finite-state control devices, and formal methods.
  • CAS CS 518: Formal Tools for Software Validation
    Graduate Prerequisites: Bachelor's degree in computer science OR Bachelor's degree in computer engineering OR consent of instructor, AND working familiarity with at least one modern programming language. - Introduces various methodologies for formal specification, testing and verification, to understand and eliminate bugs undermining system security. Two general methodologies are considered: dynamic methodologies using property-based testing and symbolic execution, and static methodologies involving program-based formal verification techniques.
  • CAS CS 519: Spark! Software Engineering X-Lab Practicum
    Undergraduate Prerequisites: (CASCS411 OR CDSDS310) or equiv. experience in software development and consent of instructor . - Consent provided upon successful completion of pass/fail diagnostic test that assesses student readiness to take the course. This course offers students in computing disciplines the opportunity to apply their programming and system development skills by working on real-world projects provided from partnering organizations within and outside of BU, which are curated by Spark! The course offers a range of project options where students can improve their technical skills, while also gaining the soft skills necessary to deliver projects aligned to the partner's goals. These include teamwork and communications skills and software development processes. Effective Spring 2022, this course fulfills a single unit in each of the following BU Hub areas: Ethical Reasoning, Oral and/or Signed Communication, Teamwork/Collaboration.
    • Ethical Reasoning
    • Oral and/or Signed Communication
    • Teamwork/Collaboration
  • CAS CS 523: Deep Learning
    Undergraduate Prerequisites: (CASCS542) - Mathematical and machine learning background for deep learning. Feed-forward networks., Backpropagation. Training strategies for deep networks. Architectures such as convolutional, recurrent, transformer networks. Deep reinforcement learning. Deep unsupervised learning. Exposure to modern programming tools and libraries. Other recent topics, time permitting.
  • CAS CS 525: Compiler Design Theory
    Undergraduate Prerequisites: (CASCS320) , or consent of instructor. - Graduate Prerequisites: (CASCS320 OR CASCS332) - Covers the basic mathematical theory underlying the design of compilers and other language processors and shows how to use that theory in practical design situations. Topics may include lexical analysis, parsing, syntax-directed translation, code optimization, and code generation.
  • CAS CS 528: Cloud Computing
    Undergraduate Prerequisites: (CASCS350 & CASCS460) or consent of instructor. CASCS455, CASCS552, and CASCS562 are recomme nded. - Fundamentals of cloud computing covering IaaS platforms, OpenStack, key Big Data platforms, and data center scale systems. Examines influential publications in cloud computing. Culminates in a group project supervised by a mentor from industry or academia.
  • CAS CS 530: Advanced Algorithms
    Undergraduate Prerequisites: (CASCS330) or consent of instructor. - Graduate Prerequisites: (CASCS330) or consent of instructor. - Studies the design and efficiency of algorithms in several areas of computer science. Topics are chosen from graph algorithms, sorting and searching, NP-complete problems, pattern matching, parallel algorithms, and dynamic programming.
  • CAS CS 531: Advanced Optimization Algorithms
    Undergraduate Prerequisites: CAS MA 123 & 124, or equivalent and CAS CS 132 or equivalent; or conse nt of instructor. - Optimization algorithms, highlighting the fruitful interactions between discrete and continuous. Intended audience is advanced master students and doctoral students. Topics include gradient descent algorithms, online optimization, linear and semidefinite programming, duality, network optimization, submodular optimization, approximation algorithms via continuous relaxations.
  • CAS CS 535: Complexity Theory
    Undergraduate Prerequisites: (CASCS332) or consent of instructor. - Graduate Prerequisites: (CASCS332) - Covers topics of current interest in the theory of computation chosen from computational models, games and hierarchies of problems, abstract complexity theory, informational complexity theory, time-space trade-offs, probabilistic computation, and recent work on particular combinatorial problems.
  • CAS CS 537: Randomness in Computing
    Undergraduate Prerequisites: (CASCS330 OR CASCS530) . CASCS535 is recommended or consent of instructor. - Graduate Prerequisites: CASCS330 or CASCS530 is recommended. - Survey of probabilistic ideas of the theory of computation. Topics may include Monte Carlo and Las Vegas probabilistic computations; average case complexity and analysis; random and pseudorandom strings; games and cryptographic protocol; information; inductive inference; reliability;others. (Offered alternate years.)
  • CAS CS 538: Fundamentals of Cryptography
    Undergraduate Prerequisites: (CASCS131 & CASCS237 & CASCS357) or consent of instructor. - Graduate Prerequisites: (CASCS332) - Basic Algorithms to guarantee confidentiality and authenticity of data. Definitions and proofs of security for practical constructions. Topics include perfectly secure encryption, pseudorandom generators, RSA and Elgamal encryption, Diffie-Hellman key agreement, RSA signatures, secret sharing, block and stream ciphers.
  • CAS CS 541: Applied Machine Learning
    Undergraduate Prerequisites: CS111 (CS112 recommended); CS132 or MA242 (or EK103); CS237 or MA581 ( or EK381.) CS365 is recommended. - Covers practical skills in machine learning including techniques for clustering, classification, regression, feature selection, and model compression. Emphasizes hands-on application of methods via programming on real- world datasets.
  • CAS CS 542: Principles of Machine Learning
    Undergraduate Prerequisites: (CASCS365) - Introduction to modern machine learning concepts, techniques, and algorithms. Topics include regression, kernels, support vector machines, feature selection, boosting, clustering, hidden Markov models, and Bayesian networks. Programming assignments emphasize taking theory into practice, through applications on real-world data sets.
  • CAS CS 543: Algorithmic Techniques for Taming Big Data
    Undergraduate Prerequisites: exposure to basic data structures and algorithms or consent of instruc tor. - Growing amounts of available data lead to significant challenges in processing them efficiently. In many cases, it is no longer possible to design feasible algorithms that can freely access the entire data set. Instead of that we often have to resort to techniques that allow for reducing the amount of data such as sampling, sketching, dimensionality reduction, and core sets. Also explores scenarios in which large data sets are distributed across several machines or even geographical locations and the goal is to design efficient communication protocols or MapReduce algorithms. Includes a final project and programming assignments in which we explore the performance of our techniques when applied to publicly available data sets. Effective Fall 2021, this course fulfills a single unit in each of the following BU Hub areas: Quantitative Reasoning II, Creativity/Innovation.
    • Creativity/Innovation
    • Quantitative Reasoning II
  • CAS CS 548: Advanced Cryptography
    Undergraduate Prerequisites: (CASCS538) or consent of instructor. - Continuation of CAS CS 538. Advanced techniques to preserve confidentiality and authenticity against active attacks, zero-knowledge proofs; Fiat-Shamir signature schemes; non-malleable public-key encryption; authenticated symmetric encryption; secure multiparty protocols for tasks ranging from Byzantine agreement to mental poker to threshold cryptography.
  • CAS CS 549: Spark! Machine Learning X-Lab Practicum
    Undergraduate Prerequisites: (CASCS505 OR CASCS542 OR CASCS585) or consent of instructor. Consent provided upon successful completion of pass/fail diagnostic test that will assess student readiness to tak e the course. - The Spark! Practicum offers students in computing disciplines the opportunity to apply their knowledge in algorithms, inferential analytics, and software development by working on real-world projects provided from partnering organizations within BU and from outside. The course offers a range of project options where students can improve their technical skills, while also gaining the soft skills necessary to deliver projects aligned to the partner's goals. These include teamwork and communications skills and software development processes. All students participating in the course are expected to complete a project focused on an application of inferential analytics or machine learning, including a final presentation to the partner organization.