Asee peer logo

An Application-based Learning Approach to C Programming Concepts and Methods for Engineers

Download Paper |


2016 ASEE Annual Conference & Exposition


New Orleans, Louisiana

Publication Date

June 26, 2016

Start Date

June 26, 2016

End Date

August 28, 2016





Conference Session

SDR & Programming in ECE Education

Tagged Division

Electrical and Computer

Page Count




Permanent URL

Download Count


Request a correction

Paper Authors


Wesley G. Lawson University of Maryland, College Park

visit author page

Prof. Lawson has earned five degrees from the University of Maryland, including a Ph,D, in Electrical Engineering in 1985. In his professional career at College Park, where he has been a full professor since 1997, he has worked on high-power microwave devices, medical devices, and engineering education. He is an author or coauthor on 5 books and over 70 refereed journal articles and 200 conference presentations and publications.

visit author page


Stephen Secules University of Maryland, College Park Orcid 16x16

visit author page

Stephen is an Education PhD student at UMD, researching engineering education. He has a prior academic and professional background in engineering, having worked professionally as an acoustical engineer. He has taught introduction to engineering design in the Keystone Department at the UMD A. James Clark Engineering School. Stephen's research interests include equity, culture, and the sociocultural dimensions of engineering education.

visit author page


Shuvra Bhattacharyya University of Maryland, College Park, and Tampere University of Technology

visit author page

Shuvra S. Bhattacharyya is a Professor in the Department of Electrical and Computer Engineering at the University of Maryland, College Park. He holds a joint appointment in the University of Maryland Institute for Advanced Computer Studies (UMIACS). He is also a part time visiting professor in the Department of Pervasive Computing at the Tampere University of Technology, Finland, as part of the Finland Distinguished Professor Programme (FiDiPro). He is an author of six books, and over 250 papers in the areas of signal processing, embedded systems, electronic design automation, wireless communication, and wireless sensor networks. He received the B.S. degree from the University of Wisconsin at Madison, and the Ph.D. degree from the University of California at Berkeley. He has held industrial positions as a Researcher at the Hitachi America Semiconductor Research Laboratory (San Jose, California), and Compiler Developer at Kuck & Associates (Champaign, Illinois). He has held a visiting research position at the US Air Force Research Laboratory (Rome, New York). He has been a Nokia Distinguished Lecturer (Finland) and Fulbright Specialist (Austria and Germany). He has received the NSF Career Award (USA). He is a Fellow of the IEEE.

visit author page


Ayush Gupta University of Maryland, College Park

visit author page

Ayush Gupta is Assistant Research Professor in Physics and Keystone Instructor in the A. J. Clark School of Engineering at the University of Maryland. Broadly speaking he is interested in modeling learning and reasoning processes. In particular, he is attracted to fine-grained analysis of video data both from a micro-genetic learning analysis methodology (drawing on knowledge in pieces) as well as interaction analysis methodology. He has been working on how learners' emotions are coupled with their conceptual and epistemological reasoning. He is also interested in developing models of the dynamics of categorizations (ontological) underlying students' reasoning in physics. Lately, he has been interested in engineering design thinking and engineering ethics education.

visit author page

Download Paper |


We have developed and thrice taught a project-driven, 3-credit C programming course for first-year electrical and computer engineering (ECE) students. The course requires both traditional programming assignments and application-driven assignments in which the students write code to interact with hardware. The course involves two hours of lecture and one three-hour lab session each week. In addition to mastering the student learning outcomes of a traditional programming course, students in our course are introduced to many concepts from the electrical engineering discipline, including elements of circuit theory, electromagnetics, controls, and communication systems. In our department, this course is allowed as an alternative to a traditional software-only introductory C language course. Both courses are designed for students with little or no programming experience and both serve as a prerequisite for a more advanced programming course.

The Raspberry Pi computer is the device the students use for the hardware-based assignments. The laboratory room is equipped with a station for each student that includes a Raspberry Pi 2B and needed hardware (keyboard, mouse, HDMI/DVI monitor). It also contains all of the components, hardware, and test and measurement equipment needed to perform the labs. Students are also issued a Raspberry Pi 2B (RPi) kit that includes the device, case, charger, USB Wi-Fi adapter, cables and electronic components, and a microSD card. The microSD cards are preloaded with an image that includes all of the software needed to succeed in the course, plus copies of all the lecture documents, sample codes, and special instructions. Students are also provided with tutorials on how to connect their RPis to their laptops. Many students choose this route even in the lab as it provides a very convenient, portable interface to the RPi.

There are nine labs in the course. One-third of the labs are performed individually and the other two-thirds are designed to be done in groups of two. While some of the labs can be finished in three hours, many are to be completed outside of regular lab time, and students carry their microSD cards to and from lab for continuity. Students learn to work with various sensors and actuators, as well as operational amplifiers, A/D converters, and basic components. Sensors can be analog or digital, such as photoresistors, temperature sensors, IR and ultrasonic distance sensors, and three-axis magnetometers, gyros and accelerometers. Actuators include LEDs, servo and conventional motors. Digital devices require SPI or I2C communication.

The software programming assignments may be done on the RPi or any other machine, either in a Linux line-command environment or in any IDE. All of the non-hardware assignments are related to concepts and computations needed in sophomore and junior-level ECE courses.

The group project is designed for groups of 3-5 students. Groups are assigned after about 1/3 of the semester and have various preparatory tasks to perform in the middle third before the project begins in earnest the final third of the semester. The final project involves an autonomous vehicle using sensors to navigate an obstacle course and then a sensor-free return to start.

In this paper we will describe the course in detail and discuss student enrollment, performance and attitude differences between this course and our traditional 2-credit C programming course.

Lawson, W. G., & Secules, S., & Bhattacharyya, S., & Gupta, A. (2016, June), An Application-based Learning Approach to C Programming Concepts and Methods for Engineers Paper presented at 2016 ASEE Annual Conference & Exposition, New Orleans, Louisiana. 10.18260/p.26567

ASEE holds the copyright on this document. It may be read by the public free of charge. Authors may archive their work on personal websites or in institutional repositories with the following citation: © 2016 American Society for Engineering Education. Other scholars may excerpt or quote from these materials with the same citation. When excerpting or quoting from Conference Proceedings, authors should, in addition to noting the ASEE copyright, list all the original authors and their institutions and name the host city of the conference. - Last updated April 1, 2015