CLUE
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-ware
    • 3 weeks long self-study material
    • 16 weeks long regular offering material
  • Software
    • A client-server "CLUE" software providing
      • Semi-automatic grading of assignments
      • Support for a so-called "Peer Testing" pedagogy
      • Novice Errors Detections with tutorials
      • Tutorials to hyperlink to ambiguous compiler error messages
    • A lighter, web-based version of the above software, focussing on;
      • Novice Errors Detections & tutorials
      • Tutorials to hyperlink to ambiguous compiler error messages

Both versions of our educational material feature online modules with

  • Lecture Videos
  • Demonstration & exploration videos
  • Cognitive Apprenticeship Videos
  • Projects with & without student solutions

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

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 alessio@usf.edu with any question, suggestion, remark or problem you might have.

Self-Study Modules

http://cereal.forest.usf.edu/clue/self-study/

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

http://cereal.forest.usf.edu/clue/progdesign/

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

http://cereal.forest.usf.edu/clue/ned/

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 alessio@usf.edu

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 rtindell@cse.usf.edu

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 Conferences

  • 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, Role of the C Language in modern computing curricula: Part 1 - Survey Analysis, CCSC-SE, Consortium of Computer Science in College South Eastern Conference, 2007, [pdf]
  • A. Gaspar, S. Langevin An Experience Report on Improving Constructive Alignment in an Introduction to Programming, CCSC-SE, 26th Annual Consortium for Computing Sciences in Colleges, Southeastern Conference, November 2-3 2012, Southern Polytechnic State University, Marietta, GA. In cooperation with SIGCSE & ACM [pdf]

Posters

  • 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;

Faculty

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 SyntaxParser.py 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

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.
    • Implemented the first version of the self-study virtual appliance & self-study web site during his Fall 2011 IT Senior Project in the USF Information Technology division.
  • Mike Nachtigal
    • Graduate Student OPS
    • Implemented the SyntaxParser.py module for novice error detections