Courses

CDS Spark! Labs Affiliated Courses

Spark! is responsible for providing students with opportunities to engage in real world computing and data science projects as part of a diverse set of experiential learning offerings. 

These opportunities include courses where students can pursue their own innovation projects (Spark! Fellowship XCC475) with the support of external mentors or classes affiliated with the CDS/ Spark! X-Lab where students work on projects provided by external partners who provide guidance and mentorship alongside Spark!’s team of project managers. 

Additionally, we also offer 1 credit workshops where students can build their knowledge around specific topics relevant to real-world application of computing and data science.

The following list of courses are courses associated with the CDS/Spark! Student Experiential Learning Pathways.

Fall 2021 Course Descriptions

CS 200: Software Engineering Career Preparation

Instructors: Bandan Das and Langdon White 

Ever wonder what it is like to be a Software Developer in industry? Do you have any idea what the differences are between a “Software Engineer,” a “Software Developer,” a “Quality Engineer,” etc.? Do you wonder what you do every day if you get hired as a programmer? Well, this course might be for you.

Software Engineering Career Prep is a two credit course taught by industry software veterans from Red Hat/Spark! Engineers in Residence with experience with startups, large tech companies, and “inside IT” at banks, pharmaceuticals, and government. We decided to present this course so that students could get an unadulterated view of what you need to know on day 1 through forever after you graduate and take that “real job” you have spent so long preparing for. 

From a brass tacks perspective, we will cover a number of tactical topics. First up, the language of modern software development including patterns, source control, pull requests, open source, containerization, virtualization, and agile vs waterfall development methods. Next examples of the day to day mechanics of a software developer. After that, we will cover a few of the specialized engineering roles including quality and performance. Finally, we will help you design a development environment and understand why this is important and the many tradeoffs involved.

CS 200: Continuing Fellowship

Instructor: TBD

This course is for students who have previously completed the Spark! Innovation Fellowship (XC475) and requires instructor permission. Continuing fellowship offers students an opportunity to continue development of their project started under the Spark! Innovation Fellowship. 

XCC433: Justice Media co-Lab

Instructors: Brooke Williams

The Justice Media co-Lab, a collaboration between BU Spark!, based at the Faculty of Computing & Data Sciences, and the Journalism Department at the BU College of Communication, matches interdisciplinary student teams with a background in computer science, statistics, computer engineering, or data science or journalism related disciplines with computational journalism projects provided by external media partners. 

Projects vary in size and scope and range from smaller projects that are approximately 60 hours of work to larger projects that can be as much as 100 hours of work per team member over the course of a semester. Projects are comprised of teams of approximately 3 computer science or engineering students and require partner organizations to dedicate approximately 45 minutes per week for the 8-12 weeks of project implementation.

XCC 475: Spark! Fellowship

Instructors: Ziba Cranmer, James Grady, and Richard Kasperowski

The Spark! Fellowship program is dedicated to catalyzing Boston University student innovators passionate about solving problems through technology. If you have an idea you want to take to the next level, Spark! offers a structured process and technical support for students to work independently to advance a technology project of their own creation. The program includes instructional components that cover key topics relevant to the process of technology product development process, including user-centered design, prototyping, agile development processes, and more. Spark! Fellows have two options for participating in this program: for class credit or a paid on-campus internship both of which aim to provide the time, structure, and support needed to complete a working prototype by the end of a semester. Students will also have priority access to a collaborative co-working space and technical mentors to guide them through the product creation process. The experience is designed to foster interaction and peer feedback among the teams and help students access the full set of innovation resources available across the Innovate@BU ecosystem.

BU Spark! offers students two options for participating in the Innovation Fellowship Program including class credit or a paid on-campus Spark! internship. The experience and requirements for the fellowship are the same regardless of which option a student chooses to complete the fellowship.

Application required for course and paid internships options and includes interviews. Apply at this link.

HUB XCC 475 A1 (counts toward CS Group D requirements)

Monday 2:30-5:15pm; 4.0 credits (Computer Science or HUB)

**Note: we have a small number of paid stipends for students who do not want to participate in the curricular track, but the program and attendance requirements are the same as the curricular track. Monday 2:30-5:15pm; 100 hours at $15/hr

CS 501 T1: Spark! Software Engineering X-Lab Practicum

Instructor: Dharmesh Tarapore

A sizeable portion of computer science graduates go on to become software engineers. The X- Lab Software Engineering Practicum affords students opportunities to work on real-world projects, thus highlighting some of the challenges unique to working on a substantive software project. Ultimately, we hope to bridge the gap between computer science and software engineering, through project-based learning.

We will divide our discussion into 3 parts:

  1. Software definition, teamwork, and management
  2. Design and development
  3. Delivery and maintenance

We begin by exploring the various phases of software development methodologies. In this part of the course, we will study software development models and learn to use scrum, a flexible, iteration-driven approach to project management. We will also learn the delicate art of managing client expectations—a task that often involves understanding how software engineers and clients view time estimates differently.

In the second part of the course, we will focus on design, architecture, and development of software. We will practice writing maintainable code and working with legacy code. Central to this part of the course are the concepts of test-driven development and defensive programming, both of which we will examine and integrate into our own projects.

Finally, we will wrap up our discussion by devising a software delivery and maintenance plan. Here we will study continuous delivery and deployment, two distinct but compatible approaches to release reliable software in short cycles. We will chart and showcase our progress through a sufficiently complex semester-long project.

You can find the full syllabus here.

CS 501 T2: Spark! Machine Learning X-Lab Practicum

Instructor: TBD

Traditional machine learning (ML) courses underemphasize—or in some cases—eschew software engineering principles, to ensure beginners focus their attention on developing a solid understanding of ML. While justifiable, this practice perpetuates an ever-widening gap between industry expectations and student skills.

The X-Lab Machine Learning Practicum affords students opportunities to work on real-world, semester-long projects while highlighting architectural, infrastructural, and foundational considerations involved in building and shipping an enterprise machine learning pipeline. Ultimately, we hope to bridge the aforementioned gap between computer science and ML engineering, through project-based learning.

We will divide our discussion into 4 parts:

  1. Teamwork and project management
  2. Problem definition, data preprocessing, and exploratory research
  3. Designing and developing ML pipelines
  4. Delivery and maintenance

We begin by exploring the various phases of software development methodologies. In this part of the course, we will study software development models and learn to use scrum, a flexible, iteration-driven approach to project management. We will also learn the delicate art of managing client expectations—a task that often involves understanding how software engineers and clients view time estimates differently.

In the second part of the course, we will develop an understanding of our project’s needs and constraints and explore possible ML-based solutions. Importantly, we will also investigate and determine the need for machine learning, since not every problem requires (or even benefits from) ML. Having definitively established a need for machine learning, we will learn ways to preprocess and clean data, to understand it better. Here, we will look at techniques to augment sparse data, unearth hidden correlations, and contend with vast datasets.

In the third part of the course, we will focus on the design, architecture, and development of ML pipelines. We will use popular open source tools to build and train machine learning models. We will also focus on applying machine learning techniques to specific domains (e.g. computer vision, natural language processing, etc.)

Finally, we will wrap up our discussion by devising a delivery and maintenance plan. Here we will study continuous delivery and deployment, two distinct but compatible approaches to releasing reliable software in short cycles.

The syllabus is available here.

CS 506: Computational Tools For Data Science

Instructors: Lance Galletti, Mark Crovella

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.