Genevieve Lipp: Teaching Programming from Scratch

8/8/19 Pratt School of Engineering

New faculty member Genevieve Lipp specializes in teaching programming to non-computer engineers

New faculty member Genevieve Lipp
Genevieve Lipp: Teaching Programming from Scratch

Genevieve Lipp will join the faculty of Duke University’s Department of Electrical and Computer Engineering and Department of Mechanical Engineering and Materials Science as assistant professor of the practice, beginning this fall.  

Lipp is no stranger to Duke; in fact, she earned both BS and PhD here, in the Department of Mechanical Engineering and Materials Science, and was introduced to programming when running her own simulations for non-linear dynamical systems. 

She became interested in learning programming from the ground up while working at Duke Learning Innovation by building a Java specialization course, co-taught by ECE’s Andrew Hilton. From there, she read All of Programming,the 700-page textbook by Hilton and Anne Bracy, completing the complementary exercises and still desiring more knowledge and more practice. Hilton directed her to the mastery learning platform for ECE 551, a graduate-level class for prospective computer engineers without programming backgrounds, which she also devoured. The next year, Hilton asked Lipp to co-teach ECE 551, which she has been doing for the past several years. Together with Hilton and Bracy, she helped translate the first third of the course into the Coursera specialization Introduction to Programming in C.

In her new role, Lipp will spend more time engaged in innovation and research in engineering education, including online education, in addition to her teaching responsibilities.

Her teaching style, she said, accommodates both students who, like herself, are starting from scratch, and also those who might know some programming but want to learn the best approach and gain the most competency. 

“One thing that levels the playing field is to identify patterns by working problems by hand,” said Lipp—a signature requirement of the Duke ECE team’s approach, with no shortcuts allowed. By spending appropriate time in this offline “planning phase,” said Lipp, students learn how each line of code influences and changes the state of the program. “We feel very strongly it’s the best way to learn to program,” said Lipp.

“One thing that levels the playing field is to identify patterns by working problems by hand.”


Lipp will teach ECE 551 this fall, and expects to add a graduate-level introductory programming class in the spring. That class, also designed for non-computer engineers, will emphasize new applications for programming, including assignments on financial models like portfolio planning, and will be co-listed with Duke Engineering’s new Financial Technology (FinTech) master’s program. Those enrolled should not expect lectures, Lipp emphasized. According to her teaching philosophy, knowledge is constructed rather than transferred, which is why she starts with a learning objective and helps her students develop programming skills for themselves.

“Programming is hard,” acknowledged Lipp, and said students should come to class expecting to be challenged. “But we can teach you to work through the problems in the most efficient way.”

Meet New Faculty Member Neil Gong