A sprint to the finish line
Photos courtesy of Alma Rojas and Disha Thakar | Illustrations by Joy Smoker June 12, 2023
UD’s computer science senior design program helps seniors become career-ready
From developing new artificial intelligence algorithms to creating next-generation apps, students who major in computer science are training to become the next generation of software engineers, programmers and developers. An essential part of that training includes a final year capstone project, where students use the skills they learned during their studies to address a previously unsolved problem.
In the University of Delaware’s College of Engineering’s Department of Computer and Information Science, students earning a bachelor of science in computer science gain this essential, hands-on experience in software development as part of a two-semester senior capstone course. With a focus on using the tools, vernacular and project management strategies from industry, seniors learn firsthand that it takes more than code to create a successful final project.
A crash course in career-readiness
After the senior design curriculum was revamped in 2015 to focus on projects for clients, in 2019 senior design classes were expanded to take place during two semesters, CISC 498 in the fall and CISC 499 in the spring. The goal, explained Greg Silber, who previously led senior design for the department, was to give students more time to learn and practice essential software engineering skills in a classroom setting.
“We try to give students an experience of what it’s like to work with and meet with clients, including the process of getting feedback and using modern software engineering techniques and documentation,” Silber said. “It’s almost akin to a project management course on top of a software engineering course.”
And while students learn the fundamentals of software engineering in CISC 275: Introduction to Software Engineering, becoming a career-ready software engineer also means understanding project management, workflow, documentation and client relations, explained Assistant Professor Jeremy Keffer, one of the lead instructors for the senior design courses.
“We want to simulate the experience that students will have in the working world,” said Keffer. “To do that, students are split into teams to work on software projects, where they have to gather the project requirements, communicate with the client, and do all of the necessary project management tasks.”
After a month of classroom instruction in the fall, covering topics such as project management, version control, formal code review, and collaborating with a team of developers, students meet with the client that they will work for until the end of the spring semester.
To break up the project’s tasks, students work in “sprints.” These are two-week intervals where team members focus on a specific task, such as implementing a new feature, and at the end of the sprint, teams report to the client about what they completed and what tasks are in their backlog. This workflow, which ensures there are updates to show clients on a regular basis, is typical of what software engineers use in the workplace, Keffer explained.
Senior design is also about helping students problem-solve beyond what they might be assigned in a traditional classroom setting, said John Aromando, also a lead instructor for senior design. Aromando added that another important aspect of the department’s program is its emphasis on tasks outside of programming, like documentation and testing, that are essential components of the work that students do while developing new software.
“In theory, capstone should be the easiest course, because you’re just applying the skills you’ve built up over the last three years, but now you’re using those skills to address a problem that has stakeholders,” he said. “And while students expect that you do a lot of programming during your day, in reality it’s just as important to understand the environment you are working around and that you know how to navigate the business aspects.”
This year, more than 100 computer science majors worked on 20 senior design projects, from a scheduling platform for the Pearson Hall Maker Space to coding a device that will travel to the International Space Station, for clients across campus and the broader Newark community. A new addition to the program this spring was the addition of a team manager, who was responsible for preparing biweekly reports and served as the main point of contact for the client, instructors and TAs.
Senior Alma Rojas from West New York, New Jersey, was the manager for a project to refine the website for a Crow Indian Virtual Archive and Museum. Working for Cindy Ott in the history department, Rojas and her team were charged with updating an interactive online map and spent the past year updating the existing software platform so they could integrate new features onto the website.
While certain aspects of the work have been challenging, Rojas has enjoyed learning firsthand what it’s like to be a project manager. “It’s a complicated back and forth, especially with coding where everyone is working on different things and you have to make sure you’re all on the same page,” said Rojas. “I find it really satisfying to get tasks done, and I like that the work is more people oriented. Initially I was thinking of doing a junior software engineering role after graduating but now I’m going to try to be an assistant project manager and work my way up.”
Disha Thakar, a senior from Wilmington, managed the creation of a Renaissance-themed gamified financial learning platform. Thakar and her six teammates developed an app designed to help fifth grade students learn economic concepts as they complete virtual “transactions” and take interactive quizzes for their client, Newark Charter School.
Thakar said that the senior design experience has reiterated her desire to work in project management in the tech sector and is thankful for the opportunity to learn about working with clients while figuring out her own managerial style. “Oftentimes, I think people have stereotypes that software engineers are just coding away. But in senior design, you realize how much interaction is part of this process of being a developer,” she said.
Seniors Adam Kenney and Brendan Green from Wilmington and Donovan Messer from Newark worked on a data science-focused project for predicting the parentage of shark eggs. After developing a PDF file renaming program for downloaded scientific papers in the fall for client Jennifer Wyffels, a researcher in the Center for Bioinformatics and Computational Biology, this spring the team was tasked with linking shark eggs to the female shark who laid them using a large dataset of egg characteristics.
Kenney and Green, who led the machine learning component of the project, said that while the process of figuring out what model to use was initially challenging, it was rewarding to see the random forest model they ended up using have a 94% prediction accuracy. Messer, who was also the team manager, led the front-end development and worked on the data display options.
“I definitely learned a lot about machine learning and about some of the use cases for the different machine learning models that are available,” said Kenney. “And while there were a few 180s that we had to do here and there, with some things we had to scrap, we still got to learn how to do things that we’ll be able to implement later in our careers.”
Green added that the opportunity to learn firsthand what it’s like to work for a client and to see how sprints are implemented was “really beneficial” for his career. “You get to see what it’s actually going to be like in the corporate world. It’s not just a group project in a class, with exact metrics to follow and a rubric — it’s up to you to figure out what is best, explain that to the client, get feedback and see where to go from there,” Green said.
Technical and professional development
Silber and Keffer said that the goal for future iterations of the senior design program is to bring in additional external clients and partners from industry. That way, students can have even more opportunities to make connections with potential employers and learn more about the ins and outs of software development in the real world.
“By solving real world problems using teamwork, students in computer science have the unique opportunity to apply what they learned in the classroom to address challenges, sometimes needing to fill the gap between theoretical knowledge and real, applicable solutions,” said Weisong Shi, department chair. “By working with our industry partners and computer science communities, in the future we aim to have 50% of our senior design projects funded. This will allow our students to gain real, problem-solving experience by working with mentors from the industry in this year-long project.”
Added Keffer, “We also want to expand our classroom program with things like resume building exercises and having managers conduct interviews for team members to give students additional experiences that they will have in the workplace.”
Aromando said he hopes that senior design continues to provide students with an understanding of the working world, both in terms of the workflow and project management aspects as well as how to professionally navigate through difficult situations. “Students train hard on technical aspects, but the typical software engineering job is not dominated by showing off technical skills. The people who succeed and get promoted are the ones who also have good soft skills,” he said.
Messer said that one of his biggest takeaways was how to deal with frustrating circumstances in a professional setting. “You learn to be really flexible,” Messer said. “When you work on something and you can’t use it, because of a miscommunication or because the work went in a different direction, it can be frustrating. But you have to learn to let it go, to roll with the punches, and say ‘the client wants this, so we have to shift direction and get it done.’”
Keffer added, “They’ve been writing code since starting, that’s not the hard part about being a software engineer. Being able to sit down with target users, figure out this is the problem, this is what they want, and being able to explain succinctly what’s going on and to give them something that does what they need it to do is the big part of the job.”