Back to [CEReAL group]
C Learning Undergraduate Environment

Welcome to the CLUE project website!

Our objective is to address the need for tools, pedagogical innovations and teaching material to support undergraduate students' learning of the C programming language.

The problem which motivated this project

While the C Programming Language is seldom taught in the CS0 / CS1 / CS2 sequence, due to its inherent difficulties, it is still used frequently in upper-level offerings such as operating systems. This situation often leads students to have to "pick up" C Programming on their own when they finally need it for such an upper-level offering or a senior project.

Our computing education research community has produced outstanding research, pedagogical innovations, software and courseware to support students' journey through CS0, CS1 & CS2. However, seldom resources are available to support students learning of the C language. despite the fact the very same difficulties which disqualify C as a suitable language for CS1 / CS2 will most likely still be impeding an undergraduate in their junior or senior years.

You will find details about this in the papers posted in the "Publications" tab on this web site, along with the result of the 2007 SIGCSE / SIGITE survey we initiated to validate our initial hypothesis.

When is CLUE relevant?

The CLUE project was initiated to address this situation by supporting the acquisition of C programming skills in various scenarios;

  • Faculty / students in an offering requiring the C language but where no time - or little time - is available for a formal introduction to it
  • Faculty / students in a C programming offering who are looking for additional pedagogical support
  • Anyone who already knows to program in at least one langague & is interested in teaching themselves C Programming skills

Resources provided by CLUE

To this end, we offer the following resources;

  • EDU material meant to facilitate the teaching, learning & self-study of C Programming. This material comes in two version; full online asynchronous offering or 3-week long intense self-study material. Resources include lecture videos, exercises, step-by-step video solutions leveraging cognitive apprenticeship principles, evaluation assignments without solutions...
  • Software
    • NED - A web application to help students identify "novice errors" in their programs & get tutorials on hard-to-understand compiler messages / novice errors warnings.
    • WebPT - A web app to allow students to exchange tests during programming assignments, thus implementing the Peer Testing pedagogy.
    • CLUE - A client / server assignment manager with support for semi-automatic grading of assignments, "Peer Testing" pedagogy, integration of the above novice errors detector...
    • SLB - A Linux-based virtual appliance running on any platform support the virtual box software & providing students with an out-of-the-box environment to learn. The above novice error application has been integrated in the Code::Blocks IDE along with the programming assignments used in our educational material.

These resources are detailed in their respective tabs; "EDU material" & "Software".

Other CER Labs & Related Projects

Make sure to visit Dr. Amruth Kumar PI Forum NSF-sponsored project for more information about other research initiatives focussed on programming pedagogy.

Make also sure to check out Derell Lipman oustanding LearnCS! web-based IDE. It is specifically designed to support novice C programmers

As part of our effort to support the learning of the C programming language as a second language, the CLUE project resulted in the development of educational material. We provide two version of the material, both suitable for online, face-to-face, or hybrid delivery modalities;

  • A 3 weeks long version meant for self-study of the language.
  • A 16 weeks long version meant for a regular supervised offering

Please take the time to browse through the available modules and evaluate whether this resource would be valuable to your students & yourself in its entirety or if you might want to re-use / adapt individual assets which might address a more specific need. Either way, we look forward to hearing from you. Feel free to contact the author / PI at with any question, suggestion, remark or problem you might have.

Self-Study Modules

To address the need to support students who have to learn C quickly as pre-requisite for an upper-level offering such as operating systems, we have developed online modules meant to be either assigned as self-study material or integrated in an offering by the instructor - if time is available. The duration is short, we estimate about 3 weeks of work part time, but the material is dense as it assumes students already know how to program.

The site has a link to a survey allowing potential adopters to let us know about their experience in details. If you found the material useful, take the time to take the survey in order to help us improve the next releases.

Full-semester Modules

In addition to the self-study modules, we released the full-semester version. This offering runs for 16 weeks & has been taught at the University of South Florida's Information Technology division.

This material is suitable for a very hands-on approach to learning C programming as a 2nd language. Each module is two week long with

  • The first week devoted to quizzes, lectures, apprenticeship exercies with their step-by-step video solutions
  • The second week devoted to applying freshly acquired knowledge with a practice assignment

Please note that the web site only features the apprenticeship videos, assignments, practice assignments, & weekly overview guides. Quizzes, exams & graded programming assignments are hosted & managed by USF's LMS. As such, they are not made publicly available

While this offering might be taught online, face-to-face, or in an hybrid manner, it is essential to provide students with the ability to get guidance on these practice assignments. We do not release solutions but ensure that every student will get the support, during the module, to reach their own valid solution.

The "CLUE" project also resulted in development of software to support the learning of the C Language. We provide two different software;

  • An easy to use, zero installation needed, "web app" which allows students to receive feedback on potential bugs in their source files. Use this if you simply want to benefit from our GCC error message clarification, automatic novice errors detection, & the tutorials for both.
  • A client server, all-in-one, assignment manager which includes the above features & allow instructors to deploy then grade easily assignments. This software also supports the "peer testing" pedagogy by enabling anonymous exchange of tests files among students. Use this if you want a full setup to administrate students assignments.

"NED" Web App

The CLUE web helper is a late addition to the software deliverables. It is motivated by the same needs than the CLUE assignments manager below but acknowledges that students & instructors might want a lighter weight solution to these problems, e.g. one which does not tie them to a specific project format or to the need to use CLUE as a tool to grade their submission.

The main objectives of the software are to;

  • Help students better understand the compiler and linker error messages which arguably ambiguous nature often represents an additional learning barrier for novice programmers
  • Automatically detect "novice errors" in students programs & provide warnings along with details.

These features are also available in the CLUE assignments manager below, however, "NED" additionally run the students' files through a variety of Linux-based code defects detections tools. All the resulting warnings, whether they are issued by GCC, the CLUE Syntax Analyzer, or any of these alternative tools, are then hyperlinked to updated versions of the tutorials.

The source for this project is available on the project's sourceforge repository

Feel free to contact the author / PI at

WebPT - Web-based Peer Testing

WebPT allows students to exchange test files during assignments. Every 2 days, students are allowed to upload both the solution to the assignment they are working on, along with the tests. This encourages students to start working on their assignments early on, and regularly make progress. Early submissions are mostly about capturing requirements as a set of tests, while later submissions focus on improving the solutions.

When students submit their files in time for one of the intermediary deadlines, the software allows them to view the tests, and only the tests, submitted by their peers. They are invited to rate the tests they view and every student is able to see the ratings they ha ve thus received.

The software is able to keep track of participation to allow the instructor to assign participation points. For now, it is integrated with the PA assignments provided in our self study and full semester offerings.

SLB - Students Linux Box

The Students Linux Box is a solution to allow students to learn C programming in a Linux environment featuring a plethora of useful development tools, integrating the CLUE project's innovations directly in the IDE, & running on any platform supporting the virtual box virtualization software.

The SLB has its own page where you will find detailed instructions on setup & usage; please visit the above link for details

CLUE Assignments Manager

The main objectives of the software are to;

  • Provide an easy tool for instructors to release assignments, have students work on them then submit them
  • Support automatic grading of assignments, based on instructors' reference solutions & reference tests. This is meant to allow instructors to handle larger enrollment without sacrifying quality by freeing them to focus on providing higher-level feedback
  • Support a so-called "Peer Testing" pedagogy we developed by allowing students to exchange their tests anonymously. For more details, see the "Peer Learning" pedagogy tab.
  • Help students better understand the compiler and linker error messages which arguably ambiguous nature often represents an additional learning barrier for novice programmers
  • Automatically detect "novice errors" in students programs & provide warnings along with details.

The source for this project is available on the project's sourceforge repository

The various files to download are in the Files Section along with the various guides. You want to set up the following in order;

  • The instructor's CLUE server; installation guide & necessary files are in the "Virtual Appliance - Server" folder
  • Each student needs to set up their CLUE Client; installation guide & necessary files are in the "Virtual Appliance - Client" folder

Feel free to contact the author at

Please stay tuned for release as we are performing another pre-release testing during spring 2013.

This project is an ongoing effort to identify & understand the learning barriers hindering novice programmers. Some of our findings or ideas on how to improve the pedagogy of programming are presented in the following papers

Peer Reviewed Journals

  • A. Gaspar, A. Ejnioui, N. Boyer, Role of the C Language in modern computing curricula: Part 1 - Survey Analysis. The Journal of Computing Sciences in Colleges, Vol. 23 issue 2, pp. 120—127, CCSC Publisher (Consortium for Computing Sciences in Colleges, USA), 2007 [pdf] [ACM Digital Library]
  • A. Gaspar, S. Langevin An Experience Report on Improving Constructive Alignment in an Introduction to Programming. Journal of Computing Sciences in Colleges, December 2012, volume 28, issue 2, pp. 132-140 [pdf] [ACM Digital Library]

Peer reviewed Conferences

  • A. Gaspar, S. Langevin, N. Boyer, R. Tindell A Preliminary Review of Undergraduate Programming Students Perspectives on Writing Tests, Working with Others, & Using Peer Testing. In Proceedings of the 14th annual ACM SIGITE conference on Information technology education (SIGITE '13). ACM, New York, NY, USA, 109-114. DOI=10.1145/2512276.2512301 [pdf] [AM Digital Library]
  • A. Gaspar, S. Langevin, Active Learning in introductory programming courses through student-led "live coding" and test-driven pair programming, EISTA, Education and Information Systems, Technologies and Applications, 2007, [pdf]


  • A. Gaspar, A. Ejnioui, N. Boyer Do you have a CLUE? C Language Undergraduate Environment, USF Lakeland Scholarship day, 04/21/2006, Lakeland, FL, USA
  • A. Gaspar S. Langevin Using multi-facets "Live Coding" to foster Active Learning in Introductory Programming Courses, USF Lakeland's Scholarship Day, Poster and demonstration, April 20th 2007, Lakeland, FL
  • A. Gaspar, A. Ejnioui, N. Boyer The role of the C language in the modern computing curricula: Survey Analysis & Future Developments, USF Lakeland's Scholarship Day, Poster and demonstration, April 20th 2007, Lakeland, FL
  • A. Gaspar, R. Tindell, N. Boyer, K. Calkins Constructivist Peer Learning with Online Asynchronous Programming Students. NSF DUE TUES PI Conference, January 26-27 2011, Washington, DC.
  • R. Tindell, A. Gaspar, N. Boyer, M. McDermott CLUE - an Educational Development Environment for Novice Programmers, USF Polytechnic Scholarship Day, 9th April 2012, Lakeland Fl.
  • A. Gaspar, R. Tindell, N. Boyer, S. Langevin Do you have a CLUE? C Learning Undergraduate Environment, Transforming Undergraduate Education in Science, Technology, Engineering and Mathematics (TUES) program PI conference, January 23-25, 2013, Washington DC.

Other material

  • Survey Monkey Results: role of the C language in modern Computing Curricula (Jan 2007, SIGCSE and SIGITE mailing lists) View results here
  • A. Gaspar, A. Ejnioui, N. Boyer, Role of the C Language in modern computing curricula: Part 2 - Beyond Survey Results, Internal report, 2007, [pdf]

This tab summarizes the contributions to the CLUE project;


The following faculty have invested time & passion into the development of the "CLUE" resources made available on this site;

Alessio Gaspar
  • Project's principal investigator
  • Authored the self-study pedagogical assets & developed its website
  • Developed the NED "CLUE web helper" based on Dr. Tindell's implementation
  • Designed & led research on Peer Testing pedaogy
Ralph Tindell
  • Co-investigator, developer
  • Developed the PREVA & CLUE software
  • Developed the virtual appliances
Naomi Boyer
  • Co-investigator; education research specialist
  • Worked on both project evaluation & pedagogical research aspects

Students - Hired

In addition, these results wouldn't have been achieved without the help of students who also contributed significantly to various aspects;

Matt McDermott
  • Undergraduate Student OPS
  • Helped debug initial CLUE releases as he served as teaching assistant for program design.
Mike Nachtigal
  • Graduate Student OPS
  • Implemented the module for novice error detections

Students - IT Senior Project

Same goes for the students who did their IT Senior Projects with us to contribute to improving the software

Matt McDermott
  • IT Senior Project Fall 2011
  • Implemented the first version of the self-study virtual appliance & self-study web site.
Adam Feller
  • IT Senior Project Fall 2013
  • Updated documentation on how to install a NED web server
  • Developed Eclipse Plugin & initial accompanying documentation on plugin
Stephen Kozakoff
  • IT Senior Project Spring 2014
Nghiem Tran
  • IT Senior Project Spring 2014


This project is based in part upon work supported by the National Science Foundation under award number DUE CCLI 0836863.Any opinions, findings, and conclusions or recommendations expressed in this publication are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.