Jamila Sam is one of EPFL’s first teachers of computer science, and she was personally responsible for opening up this discipline to life sciences students. The trailblazing mother of four is constantly seeking out new projects for her students to work on, driven by her belief in the power of a “structured, disciplined, practical approach to teaching.” In 2013, Sam and fellow computer engineer Jean-Cédric Chappelier developed four massive open online courses (MOOCs) on programming. She describes it as a “huge undertaking” – not just the time it took to make the videos, but also the effort required to adapt the material to the flipped classroom format and to “get participants interested in attending in-person classes.” Ultimately, their investment paid off, with Sam and Chappelier winning the Credit Suisse Award for Best Teaching in 2015.
More recently, Sam and Chappelier have developed the MOOC: programming project with Java, and a similar course on C++ is in the pipeline. Jamila Sam also remains heavily involved in teaching, spending many a long hour in front of her screen. “It’s true that I’m often at my computer, especially during teaching periods,” says Sam, who was named best teacher in the life sciences section in 2020. “I couldn’t tell you how long I spend answering questions from students taking their first steps into programming. But it’s incredibly rewarding to see them progress with my help.”
Breaking the mold
Sam came to EPFL to complete her thesis research in the 1990s after studying in Algeria. She joined Prof. Boi Faltings’ Artificial Intelligence Laboratory, where she remains to this day. When she arrived in Switzerland, she was surprised to find an environment dominated almost exclusively by men. “I’d say that made my first foray into teaching something of a challenge,” she says. Fortunately, things have improved since then, although women remain the minority in computer science.
I couldn’t tell you how long I spend answering questions from students taking their first steps into programming. But it’s incredibly rewarding to see them progress with my help.
In another change since those early days, Sam notes that students now arrive at EPFL with a more solid grounding in digital skills. “That doesn’t necessarily make my job easier, since many students have developed bad habits,” she explains. “There’s a tendency to teach programming in an overly formal way and to merely scratch the surface. I take a different approach. Instead of concentrating on specific programming languages, my classes focus on instilling the underlying concepts. I try to take a structured, hands-on approach – one that equips students with the knowledge and skills they need to switch from one language to another. That isn’t something you see often in the computer science literature.”
Sam gets her students tackling practical projects in pairs, as a way to help them develop teamwork and collaboration skills. For instance, she’s set a number of game-related projects for students in her Introduction to Programming class. “Games are a great way for students to get creative and learn through a process of trial and error,” she says. “They find the whole experience incredibly stimulating. Each year, the pairs behind the three best projects present their work to the whole class. It’s impressive to see how much effort the students put in.”
Students who take Sam’s classes also work on more formal projects designed to introduce them to cryptography, machine learning and other key aspects of computer science. In addition, she designs specific, targeted tasks for life sciences students, such as projects focusing on epidemiology and on self-organizing biological systems.
Games are a great way for students to get creative and learn through a process of trial and error.
“The projects I set are deliberately demanding,” she explains. “But they’re also incredibly instructive. And because the students have to invest their time, cooperate and interact, you see a sense of community develop within the class.” Sam is no stranger to hard work herself, having developed a series of toolkits for teaching coding using project-based methods. These resources are real time-savers, given how long it can take to devise a programming project – from developing the application, to writing at least 50 pages of instructions and testing the solution to make sure it works.
Sam built the toolkits – for the Java and C++ programming languages – with support from students as part of their research projects. Each kit comprises a set of reusable tools and abstractions that can be applied to projects in a range of contexts. For instance, the Java toolkit, which contains around 20,000 lines of code, lets students prototype various grid-based games in just a few hours.
Sam’s templates teach students about the importance of developing reusable, non-context-specific resources pitched at the right level of abstraction. “When you approach coding in this way, it becomes an exercise in modeling, discipline and abstraction,” she says. “These are key skills in all areas of engineering.”
Sam is a big believer in the importance of interaction, devoting a large portion of her time to answering students’ questions. “I’ve set up a coaching system for students working on my projects,” she explains. “I assign an assistant to support each pair, and I expect students to provide regular updates outlining their progress and detailing any issues they’ve encountered. We also have extremely active forums and run sessions where students can get help. When classes moved online in the spring 2020 semester, I personally answered over a thousand questions. There’s always a risk that students could fall behind and give up, especially if they arrive at EPFL with minimal programming experience. That’s why personal support is so important. Kindness is a powerful tool in teaching.”
Sam welcomes feedback from students, which she uses to review and improve her approach. She also keeps pace with the latest developments and is eager to try out new methods in her classes. Her goal, at all times, is to “see students make tangible progress and help them acquire useful knowledge and skills.” And those efforts often pay off. On one occasion, she received a card from a former student, who wrote: “Thanks to your help, I’ve built a successful career programming exoskeletons.”