THETIS: AN ANSI C PROGRAMMING ENVIRONMENT DESIGNED FOR INTRODUCTORY USE Stephen N. Freund and Eric S. Roberts Department of Computer Science Stanford University ABSTRACT As we have reported Commercially available compilers, particularly those used for languages like ANSI C that have extensive commercial applicability, are not well-suited to students in introductory the change computer note that the concerns science sophistication alleviate that this Thetis courses beginning problem use. system associated user interface and easily understood capabilities. fulfills provides a significantly students 1. of students we undergraduate with time learning On further and discovery: for language Pascal in CS l/CS2. than INTRODUCTION When the Stanford its CS l/CS2 strongly the C-based department, as more members, Ironically, reservations about of the lecturers introductory only who would that Pascal students to adopt needed C were be responsible There was little saw both for there C and the and use. extensive for students solving and algorithmic expressed more to master it, of their was that time the more design. “students debugging important from environment of the provided of the The easier revised clearer to use course, The Pascal diagnostics, that was much better a change in language—that of course project tools specifically Thetis mythology—was quarter we decided computer christened introductory Thetis that the best was to develop designed science after to address students. the sea (C) That nymph used on an experimental 1995 and then adopted for basis the entire in the spring. This paper and our experiences using it at Stanford. describes the in the 2. it harder SHORTCOMINGS OF their the learning EXISTING earlier problem time for learning.” Permission to copy without fee all or part of this material is granted provided that the copies an? not made or disbibuted for direct commercial advantage, the ACM copyright notice and the tiUe of the publication and its date appear, and notice is given that copying is by permission of the Association for Computing Machinery. To copy otherwise or to republish, requires a fee and/or speeific permission. SIGCSE ’96 2f96 Philadelphia, PA USA Q1996 ACM 0-69791 -757-X/96/0002 ....50.5O papers process [Ruckert93, is that languages most like C that designed As a result, of these most for cater environment beginning have students is been recognized Schorsch95]. commercial programmers—are student COMPILERS in the programming not a new one; such shortcomings issues of problem less for debugger of introductory Greek in winter The fear, as one lecturer would end up spending and was much of inadequate complicate make higher a function programmers. consideration, to the problem by using would in their environment. of the programming The idea that weaknesses course on of their errors It was these factors—not curriculum than they had in the past. The concerns were focused instead on whether the added complexity imposed C in the introductory fraction was often less adopted an interactive project—since in anyone’s earlier seminar we made an important was errors, and structure After solution one or two that we more to student the needs obsolete C++ to When made the difference. significant was no doubt however, beginning detected the syntax students for teaching question increasingly Likewise, to learn any level we had abandoned a programming to express was becoming to be replaced. prepare of we determined obscure frustration frustration the C compiler suited attitude shared by and outside the would a a larger of the programming compiler and included work. people the decision courses. for students in year, relatively most it is important foundation. its initial spending down examination, than compiler constituencies In particular, relevant—an both inside for advanced the decided of instruction of the affected who felt that the change more effectively needed most the change. material faculty Science C as the language sequence, supported many mind ANSI of Computer so, course after indeed student particularly Department in 1991 to adopt were to track in fact achieved not without C-based Roberts95a], on the computer as a result. indicate environment the teaching trying effect Even were code and that the student simple and visualization and instructors anticipated. evaluated that students for we set out to accomplish better To and [Roberts93, and that we have we the specifically students program the benefits of developed of a C interpreter debugging, the goals a level do not possess. designed consists editing, assume we have that provides Reactions that Thetis students environment The they at Stanford, programming student because science elsewhere to C has had a positive The in underlying compilers—particularly to for experts compilers a large rather audience of than novices. are poorly suited to use. In our experience, commercial compilers suffer from the following problems when used in an introductory course: compilers “ The error messages generated by commercial are often uninformative and sometimes misleadittg. New 300 programmers tend to make others. example, For certain omitting mistakes a required more often than semicolon or right curly brace Unfortunately, by reporting below is a very compilers a seemingly the actual does not detect file. Expert where error unrelated mistake. syntax the problem until understand novices error Although error several lines to address point the parser section, in the source practical the problem are completely and know baffled. little or no run-time identify bugs that are error confusion, the greatest logic that frustration are a source for system students never pernicious common outside comes from In the detects. because Even helpful to novices, rarely errors the bounds pointer. C, compilers run-time such such experts errors problem is especially generate code to detect are unwilling avenues are available. would its goals decided ● to pay the cost. tt’as pedagogical that offer fact of not run at primarily if making debuggers sophistication. The Stanford, for example, character pointer—a you understand usually require commercial C compiler displays string representation how a high we use string data internally. goals many the “ (k-pedagogical In until depends pedagogical end. While the failure sense, present string data restricts the utility in an this strategy makes of the debugging understandable good tools way that are C’s of the debugger. effective .. w’hetl environment. to a large extent products must all the resources developed locally, available on programming to support such integration. environments advanced the machine, typically overwhelm and offer flexibility. To inadvertently main language By that problem are later run-time run information of from and debugger during have limited compilation. Interpreters itself into incur the access a single the no need to achieve would simplicity gladly sacrifice and reduced maximum some run-time execution debugging for the to ensure that models, it interpreter was be unlikely new ideas in the design et?vironment. and dynamic we identified in the future, visualization. Exploring a research Although much the prospect a strong For the relationship that we develop and modify. of a In the as experiments. in exploring is to take cslib would design, of prepared Because useful C libraries mask much To products interested We had a team of students the incentive interpreter imaginations tool of this of undertaking to implement and importantly, extremely time. design 3( fully the [Roberts95b]. The and enthusiasm there iri taking integrated program than idea for use in the introductory competent interested students-–even more teaching idea in recent memory. the project and sought greater Mvho were Stanford, level—are science institutions penalty At project. computer an phase in efficiency speed the a preliminary provided w’itllin better conflicting of seemed extend remains are by several space required undergraduate to the in execution efficiency that makes them inappropriate for writing production code. Introductory students, however, have debugging ● program a significant between on phase. the By contrast, simulates therefore Because year, interpreter. instructions process. per in teaching temporarily programming that we were such research inte,erated ., success definitions. developing features research it hard is CS of platform. Our commercial to explore that we could users need. the execution these operations interpreter makes cslib based design a change well components example, this commercial machine as an independent combines the execution. generates if confused all the We wanted process-of or incompatible producers of several severe not pedagogically of the program. technology generated interpreter which incorrect that beginning phase is separate system ● features more of feedback a compiler compilation that understanding becomes execution facing special limits is that compiler the kind definition, these chooses successful systems to provide user interfaces that The problem that prohibit The student, complexity and self-confidence. options complex account who has no use for the added power the additional the student commercial have the beginner represent programmers do which introductory representation. students for systems 1200 students students cotnpilers offer a bewildering set of options “ Commercial and special features that are useless to the novice and Because their occasionally cause consistency problems. are The which until the underlying important those on campus, on the use of the cslib Roberts95a], complexity understand [CenterLine95], we seek, over out’ Even approach depends on the use of libraries most [Roberts93, to severely both C interpreters, product to contemplate both to reasons: satisfied commercial available enroll computer project, requirements. Macintosh. at Stanford programming to the Apple it infeasible our course, we introduce strings as an abstract type very the underlying representation early in the course, deferring close hardware CS298 In the end, we that CodeCenter of the features on the other of the of Stanford’s hardware to buy that if for the following system and our project the dimensions interpreter a software undergraduate the project it is possible courses sense only any and to assess its feasibility. such as CenterLine’s data as a hexadecimal that makes C represents level though teaching no existing represents particularly quarter the proposed to undertake There ● Interactive debuggers typically require students to understand advanced cotl cepts before they are ready to is further complicated by the assimilate them. Debugging that existing on so made are, the scratch is a major lightly, an entire evaluating preceding doing Building sure that we understood “Seminar science,” be from strategy. undertaken we spent course, an invalid checking be that as the shortcomings of this scale and complexity not a C interpreter in lhe clear serious solution should refine identified Immediately As ambitious problem, an element or dereferencing run-time not A C INTERPRETER to design a new C interpreter To make the BUILD possible shortcomings sense. system misleading as selecting of an array though Although of early the it was rather TO it was certainly idea of writing C compilers offer “ Commercial checking that would help students otherwise extremely hard to find. messages DECISION to this because that 3. THE in C programs. respond presumably programmers to look; common sometimes more of a core students and implementation. who of many a C captured any other highly wanted The existence the at Many students contributed to become more involved. was the building classes than at into their project ideas to More motivated, to drive of that group the of students meant how usable else, the AN enhance from their OVERVIEW “succeed” turned would of experience significantly would system implementers amount 4. that the project the final out have doing Strengthened no matter One to be; if nothing gotten in an introductory an enormous the project that legal would . . . Thetis was a faithful mother to [Achilles], aiding him in all difficulties and watching over his interests from the first to the last. Thetis is a complete, Hamilton, integrated that “aids students interests” by providing in their development difficulties and watches a conceptually simple, environment in which to learn programming. respects, Thetis presents a conventional user student what creates files source make in a project program files in editor up the application window, through by listing a menu-driven contrast, Thetis because its effect intended. strings flags Other using and failing enabled—as it is for to that make line common of the line: fewer of by constructs is i In default, the student likely operators to be to compare prototypes. syntactic checking in Thetis for the syntactic restrictions of When checking is [Ruckert93]. errors variable as FALSE. not what function the The as an error relational to those outlined programming legal. for enhanced C differences most by the following certainly to include The arguments Educational similar this examples include the contents The major as always = in place is interpreted is almost are similar of the operator is perfectly O, which indicates the execution interface application. statement the value erroneous In many interface: a windows, and then controls used by any Macintosh over their yet powerful, regard are almost The students. as illustrated =, C or C++ O)... assigned environment by using languages that the assignment operator In C, this Mythology is that these constructs written if(i= by instructors course is using relational restrictions faced syntactic when example THETIS —Edith certain errors own education. OF syntactic of the problems such introductory classes—students and can concentrate on developing better skills. are that Thetis ● Automatically incorporates so that students ● Offers ● Provides the cslib need not be concerned significantly enhanced a convenient Thetis with Run-time libraries, For them error that operates at syntactic errors little In his error discussion reporting of errors Schorsch notes the syntactic His in error commercial messages much generated reported by many are similar own environments feedback with simply are designed than the For example, usual c often = ● Using ● Dereferencing ● Accessing ● Assigning like “type mismatch” gives no helpful information regarding problem, and the second phrases the error may not comprehend. message value this for of type example messages makes from string may in a similar it much their or “assignment easier message The first programmer: to a variable appear trivial, fashion, for “cannot of type enhancing as we have novices done to understand all find this burden, run-time are arise, offering bugs the in Thetis errors: variable an invalid value function Calling a bad function ● Passing invalid pointer to an enumerated without returning type a value pointer arguments and to a function visualization experience has shown needed program to present to novices to present tools that debuggers a clear information in a way that programmer’s level of understanding. the learning Thetis about a While error in Thetis, and learn mistakes. 302 for so that it builds which students are already familiar. diagram, for example, shows a Thetis view By contrast, is consistent curve do not have conceptual [Birch95]. of a program we have designed error assign char. ” all C environments programmers an out-of-range To minimize the cause of the in terms a student Thetis provides a more suitable a beginning of after an array out of its bounds is designed errors phase persist such errors reduce or freeing a non-void Previous the lines from pointer without cast.” Neither useful to the introductory student. when for the following an uninitialized Debugging terse ; generate that by zero ● running makes integer is particularly frustrating corrected. help To most errors to c; Ha,, to checks Dividing the features char been code. ● “ Exiting by novices. by Thetis by compilers. and Tom compilers. to our understandable reported better analyzing have comprehending commercial messages for [Schorch95], students error messages user utility programs Pascal C compilers: error the CAP messages with do not provide The the Pascal the difficulty experiences give reporting have feedback interpreter Improved the the logic not very useful misbehaving provides. students, is finding traditionally to the students’ understanding expand on the most important detection introductory debugging error detection debugger/visualizer a conceptual level appropriate The sections that follow new features and ANSI the execution with new of a Thetis state the novice programmers, on paradigms The following editor window: with screen The window’s user left has placed mouse. The margin. Each because array line contains about has an arrow is not confronted options that students are much the In this example, of the several different in the Moreover, with also includes special advanced also willing to use the allowing visualizer modeled more for Finder students. The interface, following of the visualizer diagram is familiar to illustrates the test students correctly The Thetis two Data developed II V 4 prbc4+ssLine ❑ ❑ ❑ ❑ I word “verb inl%.etmklw TRUE teaching start 4 uninitialized ~ 3 PrmessMadlibsFile In I II using winter students the material of basis with in can be turned window with extends left of variable to view variables names next This The to in that opens in it. as well. represent arrow the variables a function and structures and Our for strings, experience develop indicates a new any icons to the The concept conceptual scope of a call understandable model of variables, stack that students of how find helps their parameter are all programs usage, presented the them and the in an accessible, way. debugging Listener, which allows the program the to create available students runs. variables from illustrated in the following to the programmer to evaluate These program, and diagram: expressions even prototype were integrated the initial version was dedicated in the of to testing seminar course considerable their is the any expression can function include calls, as used of CS 106A on as the user Thetis on an approximately course, 30 which CS 1 curriculum went we found covers [Austing78]. opportunity to damaging extremely refine bugs the before it course we in use either was the success for the following students of CS2—to the using which to use Thetis students) allowed advantage Given an enjoyed and pointers, time. we decided (300 Through students important on arrays debugging well. that most that the most experiment, CS 106A we saved of the the entire quarter. In CS 10613-Stanford’s Thetis or ‘THINK C for assignments. To measure survey of quarter of relatively student students 1995, small. reaction enrolled when, to the tools, in unfortunately, The results in the enrollments Yes were No I 0.070 100.0% Thetis easy I Were YOUever confused about how to do “something in Thetis? I 66.770 33.3qo I I Do you feel that Thetis has helped you understand pro~ramming ? 71.8% 28.2qo Do the error messages reported by Thetis help yx4 find mistakes in your programs easily? 82.0% 18.070 From Thetis the reactions, is positive. students enrolled introductory and CS2 THINK revealed in course into C. a single With it is clear This same combines quarter—who this audience, the following: that student survey was response also CS 106X—Stanford’s that a summer are as follows: I do you find we conducted CS 106A N=39 tool a components us an error checking III general, to use? Listener Another of 1993-94: and potentially quarter and felt run-time addition, the types of the variables: easy to use, but also that its structure a solid work. components use. survey, Thetis initial metaphor and so on. not only over the past and winter a group ACM gave fix first equivalent integers,[email protected] visualizer while has a folding on that function’s to arrays ❑ for The down Double-clicking of Andy of two 1994–95, large the experiment That function. Arnold) consisted the fall group Freund, the participants in Stanford’s informal it which a small of the introductory quarter faced widespread stack PROJECT by and Perry and summer and the staff system on the call THETIS The fall of 1994–95 experimental This function code, written by community. El Each additional These and refinement, i to write debuggerlvisualizer. the interpreter. * 1“ function parser/evaluator the spring refinement (Stephen during the Listener written preliminary during Providing a newly phase in parallel or writing that was Becker, source of [he the program continuing initial on Listener, stepwise OF THE Brian the of undergraduates The is tested using determine test cases. interpreter years. a and to verify EVALUATION 5. By restarting notion before Montgomery, Program functions repeatedly the function values. code for running Stanford in Thet~: input reinforces works which can the IsPalindrome without a baffling intended a program students errors than they have been in the past. the Macintosh operation where click is self-explanatory. complicated The debugger Stanford sign a simple to be executed the programmer debugger a stop with of these icons of more use, we find after margin a breakpoint to accelerated the material were to given from CS 1 programming the corresponding questions in I N=26 In general, do yoLl jind THINK easv to use? Were you ever confused aboat how to do something in THINK Do you feel that THINK helped you Yes I collective impression lectures are augmented I 69.2% C? No 26.9% I 73.170 C that Thetis ~6,970 73.1% C has for students ing ? Do the error messages reported by THINK C help you find mistakes in your programs Despite that stronger counterparts in those contrast Over helped them find When CS 106B environments, manv users mistakes, students said while fewer than execution 20 despite students who switch ‘its the choice between OUted to use Thetis for their slower started to THINK &xecution an assignment C to take speed. with advantage with engineering. portability in mind the immediate indication and programming the helper using fewer concentrate Sahami, students spent When on it. quarter of 1995, programs were significantly, teaching less assignments students how Thetis than during Release value allows easily. Gerald section office hours Michael Guide, class R. the class they Cambridge, during class, checking demonstrations program of the ACM, D. editing education: The results al., in March “DYNALAB: infrastructure Bu[[etin, A featuring March, Corporation, MA, structure [Roberts95a] people allowed and bugs more is also auDarent. 1995, CodeCenter User’s 1995. R. on Goldenstein, “The introductory impact computer of science SIGCSE Bulletin, so far,” p~~grams September Mythology,Boston: Eric “Using T/ze Art S. Roberts, experience,” Martin C,” MA: courses: Ba[[etitl, Ruckert Bulletin, and 1993. of C: A Addison-Wesley, Lilly, as teaching SIGCSE S[GCSE March and Science John undergraduates Little, C in CS 1: Evaluating Bulletin, Reading, programming “Educational “Using SIGCSE S. Roberts, [Roberts95b] [Ruckert93] Lecturers Eric Ai]proach, Stanford new S. Roberts, Librarv-Based 199.5. introductory supplementing lecture notes with real programming examples. we have no direct evidence to support the in-class et [Hamilton42] Edith Hamilton, Brown and Co., 1942. the but the better sections. of 1989. on the average. for presenting and run-tilme laboratory SIGCSE [Goldenstein89] poll.” the summer and grade formatting the undergraduate CenterLine experience,” tool to use Birch, science Eric to debug enhancements [Goldenstein89] Cot]ltlllftzicatio?ls [Roberts93] or discussion for demonstrations for science,” the Stanford staff of slower Austing, Bruce Barnes, Della and Gordon Stokes, “Curriculum Recommendations each to the course leaders Richard Engel, more usual, its REFERENCES to finish than by platforms Perhaps hours these advantage help system for general usual. It is also an excellent during use Thetis of Thetis to other the system Rollins, The topics Port Thetis ● animation,” quickly, more ● on-line required support from the programming environment to move beyond simple misunderstandings Thetis to support [CenterLine95] thought by the believe 1979. to program generally at times needed automat]c the visualizer [Birch95] and time to released five We editors Enhance program much to provide ● to step over he asks and how of time no easier the following stylistic, hurdles a “pain by one or two were to make an effective computer evaluates that people painful frustrated in structure-based dynamic at Stanford, with becoming more syntactic, ’78: common by conducting be to take full Develop computer or accessing and painful it was he noted dropped allows at Students find students the text editor Bonnette, own and therefore in an assignment, painful the amount assignment The a lecturer hand how their goal of learning on assignments collectively to paper. been utilization. over the next two years: [Austing79] introductory a variable confusing on the main performance When Thetis often reduced cluster. will the memory in this allow memory which less than half will important have runs approximately Provide to fit asked by students able initializing array element-on yet taking computing generally as not questions. Mehran tools Thetis, of 1995, ● to program has successfully are the questions were an out-of-bounds small, how development in several challenges ● run of their lesson in to choose of students in the main of without Extend 7. that Thetis classes cubicle Thetis these and also how frustration mistakes—such asked learned Thetis our and reduce discussed the sort found task at hand. Another the stress Students version and requires Thetis would faster and environment performance. Often, Thetis of the times when they were doing the final fine-tuning programs. This practice constituted a valuable software efficiency We also intend given we believe learning the system technical in the fall Thetis ● programs next improvements the error better continuing primary implementation of error PLANS in the last year, we set out to accomplish to improve increase faster The however, Our Stanford when in CS 1/CS2. are, and expect The trouble the goals in better in Thetis. FUTURE a significantly ways. C. were students more a their in CSI 06A. the usefulness of Thetis said the same of THINK y have than having Thetis concerns 80 percent typical] computing using significant messages in CS 106X they reported most percent students background C than THINK messages. work in CS 106A, using We 80.8% 19.2% easilv ? the fact much fulfills that it provides understand ]rogramm AND On the basis of our experien~e I 1 ideas sink by demonstrations CONCLUSIONS 6. 30.8% is that new An and update March on Halpern, 1993. [Schorsch95] Tom Schorsch, “CAP: An automated assessment tool to check Pascal programs for syntax, Although claim, our and style 304 errors,” SIGCSE Bulletinj March in the 1995. Richard March Bryan assistants 1995. selflogic.