Exploring Proficiency Testing of Programming Skills in Lower-division Computer Science and Electrical Engineering Courses

Document Type


Publication Date



Many engineering programs have “Introduction to Engineering” course(s) for their entering first-year students. We employ a three course sequence: ECE 101 explores the electrical engineering field; ECE 102 develops problem solving skills and introduces programming; and ECE 103 focuses on intermediate level C programming. In ECE 102, we introduce MATLAB as both a problem solving platform and a programming language.

Mastering logical or algorithmic thinking and applying it to programming is often difficult for novices, yet many could still pass ECE 102 even though their understanding of programming concepts remained rudimentary. This caused serious problems in the more advanced follow-on programming course. Our colleagues in the Computer Science department have dealt with a similar problem by introducing labs followed by competency tests which are used as gateways, i.e., students cannot proceed until they pass the test. Following their lead, we introduced a competency test in ECE 102 for programming skills, which is graded pass/fail.

Our first attempt at competency testing was run as optional “extra credit” for students to replace missing assignments. No special test preparation was offered. Roughly 1/2 of 80 students participated and 1/2 passed the test. The single test at the end of the course required students to write a MATLAB script that solved a given problem and involved the following tasks:

  1. getting user input
  2. setting up a loop or a selection statement
  3. writing and calling a function
  4. displaying a result

The intent was to assess the students’ ability to write an elementary program that demonstrated their competency in front of the examiner. While good students finished the test by the time limit, less prepared students struggled with most components.

In a second trial, we made the competency test mandatory and provided extra programming labs for students to practice MATLAB programming. We still observed that many students struggled and required 2-3 times the allocated time to complete the tasks. Furthermore, many required hints from the instructor.

We are preparing a third implementation with these changes:

  1. Designing two competency tests instead of one.
  2. Providing targeted instruction and practice to students who need more guidance.
  3. Simplifying the tests further to emphasize essential concepts.
  4. Providing another chance for those who do not pass the first time, but hold firm for those who do not pass on the second attempt.

We believe competency testing is a useful tool in teaching and assessment, but it presents many conceptual and implementation challenges for instructors. In our paper we will discuss our experience in more detail, provide assessment data, and provide guidance to those who are facing similar problems in teaching programming and who would like to implement competency testing.


Poster presented at Assessment & Accreditation in ECE Conference.

Persistent Identifier