the use of auxiliary resources on introductory computing · pdf filethe use of auxiliary...

8
The Use of Auxiliary Resources on Introductory Computing Courses for Engineering F.C.N. Campos * , G.S. Olguin * * Polytechnic School of the University of S˜ ao Paulo, S˜ ao Paulo, Brazil Index terms: algorithms, LEGO MindStorms, LabVIEW. Abstract In the present study we analyzed several resources that could be used as auxiliary tools on Introductory Computing courses, based on the course on this subject lectured at the Polytechnic School of the University of S˜ ao Paulo (EPUSP/Brazil) to first-year undergraduate students. Programming courses develop abilities which will be useful to not only Electrical or Computing Engineers, but any engineer’s professional life [1][2]. In this context, it is essential that classes stimulate students to think about a problem before start coding, a recurring problem amongst beginner programmers [3]. The model presented in this article intends to show how visual language and robotics resources could be useful in contextualizing computer logic apprenticeship, creating a studying style in which the student participates more actively in the class. Also, the presented method tries to heighten focus around programming logic and algorithm development, so that a programming language is treated more like a tool than a main subject of the course. However, if the tools require even a medium time to be mastered, they would not be appropriate for use in the course, as Introductory Computing courses usually have to show a large number of difficult topics in short time [4]. So, all chosen tools are easy to be used, and students may be able to master the basics, in the worst case, in up to forty minutes, according to previous experiences of other authors [5]. Also, in this method we tried to use, when possible, tools that will be useful to the future engineer, giving the student a first contact with software that is commonly used in the industry. I. COMPUTATIONAL LOGIC AND I TS ROLE IN ENGINEERING EDUCATION Nowadays, computers are indispensable tools to any engineer, no matter the specialization. According to Dunne [1] and McKenna [2], every engineer should learn at least a little of computer programming during his studies, because not only does it develop logical reasoning, but it is also useful knowledge when developing tools to aid an engineer’s everyday tasks. Learning computer programming also helps students develop useful habits for engineering practice, such as breaking a big problem into several smaller ones, which is easier to solve. In Brazil, the National Curriculum Guidelines (DCN’s), a Federal Law which guides the contents of what undergraduate courses are supposed to teach, obligate engineering students to learn computing skills during their course [6]. A recurring problem in Introductory Computing courses, as said by some researchers, is the fact that many programming concepts are abstract. A common difficulty, usually seen right at the beginning of the course, is the case of attributing a value to a variable using that same variable’s value as a parameter, such as the expression variable1=variable1+2, when beginner students tend to use a mathematical point-of-view and ask about an algebraic impossibility (0=2). Difficulty in programming learning does not come from a single cause, but several ones, as suggested by Gomes [3]. Several of the pointed causes tend to converge to the fact that programming professors usually focus on language syntax teaching instead of problem solving using computational logic. Also, students tend to use a wrong method of study, equally focusing in language syntax instead of practicing the use of computational logic. Furthermore, as suggested by Hasker [4], Introductory Computing courses usually have to cover a large number of difficult topics in a short time, a problem that demands a solution that would make students learn faster and better. According to Westphal [5], in the University of Nevada, every engineering student must take the In- troductory Computing course, just like in the Polytechnic School of the University of S˜ ao Paulo. In both schools, most students will not use the more specific topics covered in the course - such as the programming language itself - on the rest of their undergraduate course or even in their professional life. So, teaching 1 E-mail: [email protected] 2 E-mail: [email protected]

Upload: lexuyen

Post on 20-Mar-2018

213 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: The Use of Auxiliary Resources on Introductory Computing · PDF fileThe Use of Auxiliary Resources on Introductory Computing Courses for Engineering F.C.N. Campos , G.S. Olguin Polytechnic

The Use of Auxiliary Resources on Introductory Computing Coursesfor Engineering

F.C.N. Campos∗, G.S. Olguin∗∗Polytechnic School of the University of Sao Paulo, Sao Paulo, Brazil

Index terms: algorithms, LEGO MindStorms, LabVIEW.

Abstract

In the present study we analyzed several resources that could be used as auxiliary tools on IntroductoryComputing courses, based on the course on this subject lectured at the Polytechnic School of the Universityof Sao Paulo (EPUSP/Brazil) to first-year undergraduate students. Programming courses develop abilitieswhich will be useful to not only Electrical or Computing Engineers, but any engineer’s professional life[1][2]. In this context, it is essential that classes stimulate students to think about a problem before startcoding, a recurring problem amongst beginner programmers [3].

The model presented in this article intends to show how visual language and robotics resources couldbe useful in contextualizing computer logic apprenticeship, creating a studying style in which the studentparticipates more actively in the class. Also, the presented method tries to heighten focus around programminglogic and algorithm development, so that a programming language is treated more like a tool than a mainsubject of the course.

However, if the tools require even a medium time to be mastered, they would not be appropriate for usein the course, as Introductory Computing courses usually have to show a large number of difficult topics inshort time [4]. So, all chosen tools are easy to be used, and students may be able to master the basics, inthe worst case, in up to forty minutes, according to previous experiences of other authors [5]. Also, in thismethod we tried to use, when possible, tools that will be useful to the future engineer, giving the student afirst contact with software that is commonly used in the industry.

I. COMPUTATIONAL LOGIC AND ITS ROLE IN ENGINEERING EDUCATION

Nowadays, computers are indispensable tools to any engineer, no matter the specialization. According toDunne [1] and McKenna [2], every engineer should learn at least a little of computer programming during hisstudies, because not only does it develop logical reasoning, but it is also useful knowledge when developingtools to aid an engineer’s everyday tasks. Learning computer programming also helps students develop usefulhabits for engineering practice, such as breaking a big problem into several smaller ones, which is easier tosolve. In Brazil, the National Curriculum Guidelines (DCN’s), a Federal Law which guides the contents ofwhat undergraduate courses are supposed to teach, obligate engineering students to learn computing skillsduring their course [6].

A recurring problem in Introductory Computing courses, as said by some researchers, is the fact that manyprogramming concepts are abstract. A common difficulty, usually seen right at the beginning of the course,is the case of attributing a value to a variable using that same variable’s value as a parameter, such as theexpression variable1=variable1+2, when beginner students tend to use a mathematical point-of-view and askabout an algebraic impossibility (0=2).

Difficulty in programming learning does not come from a single cause, but several ones, as suggested byGomes [3]. Several of the pointed causes tend to converge to the fact that programming professors usuallyfocus on language syntax teaching instead of problem solving using computational logic. Also, studentstend to use a wrong method of study, equally focusing in language syntax instead of practicing the use ofcomputational logic. Furthermore, as suggested by Hasker [4], Introductory Computing courses usually haveto cover a large number of difficult topics in a short time, a problem that demands a solution that wouldmake students learn faster and better.

According to Westphal [5], in the University of Nevada, every engineering student must take the In-troductory Computing course, just like in the Polytechnic School of the University of Sao Paulo. In bothschools, most students will not use the more specific topics covered in the course - such as the programminglanguage itself - on the rest of their undergraduate course or even in their professional life. So, teaching

1E-mail: [email protected]: [email protected]

Page 2: The Use of Auxiliary Resources on Introductory Computing · PDF fileThe Use of Auxiliary Resources on Introductory Computing Courses for Engineering F.C.N. Campos , G.S. Olguin Polytechnic

problem solving using computational methods becomes more important than the programming language, asthis knowledge would contribute in the development of competences and abilities that might be useful inother subjects or in their professional life.

The logical reasoning development must also be accompanied by a contextualizing treatment, showing thestudent how the theme fits into the area he will be working with in the near future. The professor should,whenever possible, try to present generative themes [7] related to the applicability of the programmingknowledge in engineering practice. This would help engineering students that will not work directly withprogramming, such as the Civil Engineering student, to comprehend the importance of computational logiclearning. Moreover, the use of contextualization would turn computational logic teaching more pleasant, asthe student would interact with a subject of his/her interest while directly working with programming.

So, one of the proposals would be a method that allowed elaboration of logical algorithms for engineeringproblem solving using visual diagrams before coding, but in such a way that the student could verify theresults of each step before proceeding to the next one. This way, the student would execute all steps inproblem solution development before jumping to code writing.

It is also proposed the use of a generative theme which would be of interest to the students, so that itcould be a motivating agent in learning, contextualizing the knowledge and strengthening the bond betweenstudents and the subject.

II. THE INTRODUCTORY COMPUTING COURSE AT THE POLYTECHNIC SCHOOL OF THE UNIVERSITY OF

SAO PAULO

The Polytechnic School of the University of Sao Paulo has 473 professors and 4524 students. It offers13 courses in Engineering, five-year long each, including: Civil, Environmental, Mechanical, Chemical,Computing, Electrical, etc. The first year is standard, all courses offer the same subjects, and from thesecond year on, almost the entire curriculum is based on specific subjects to each specialization. Amongcommon subjects there is a programming subject - Introductory Computing which is about algorithm theoryand C programming - and a subject about numerical algorithms - Numeric Calculus which is about themessuch as the Simpson’s Rule for numerical integration, polynomial interpolation, Newton-Raphson method,amongst others. Both subjects have more complex programming tasks that should be accomplished by thestudents, individually, using C programming. These tasks, which contribute to the student’s final evaluationgrade, are distributed along the course, being usually four tasks per period for Introductory Computing andtwo tasks per period for Numeric Calculus. The complexity level increases on each task.

Introductory Computing classes consist basically of theoretical explanations, with programming demon-strations or code examples on the blackboard or using multimedia presentations. According to McKenna [2],in Northwestern University, where a similar method was used, this kind of class did not stimulate studentsinto programming, as it was a too passive way of learning, while programming apprenticeship must beactive, with the student really taking part in the programming process. With a recent change in the courseformat, now with a practical class, students at Northwestern University work in real programming tasksduring class, receiving more immediate answers. This immediate feedback allows the student to solve anymisunderstandings regarding the subject in class and as soon they appear, thus allowing a more dynamicalprocess of learning where the student participates actively watching and practicing what is being taught, notas a mere passive observer who will only notice that didn’t understand something when the class alreadyended.

Many of the problems the students interviewed by McKenna [2] exposed are common to the course lecturedat the Polytechnic School of the University of Sao Paulo, such as students copying tasks from other studentsdue to the difficulty in writing the programs without any previous experience and the difficulty to learn bytheory-based classes only.

By adding practical classes, McKenna [2] affirms having more positive results due to the previouslyspecified benefits regarding the immediate feedback and professor assistance in class. Furthermore, studentsalso mentioned that being able to practice the subject in class is also a positive characteristic of a morepractical approach.

Maybe the method exposed by McKenna [2] could be used in the Introductory Computing course of thePolytechnic School of the University of Sao Paulo. However, the author concludes that, although tasks weremade for individual accomplishment, separating students in small groups could be more efficient. So, itwould be an interesting experience separating classes in small groups of two to four students each, so thatteamwork, which is another competence listed in Brazilian DCNs, can also be developed during classes.

Page 3: The Use of Auxiliary Resources on Introductory Computing · PDF fileThe Use of Auxiliary Resources on Introductory Computing Courses for Engineering F.C.N. Campos , G.S. Olguin Polytechnic

Moreover, visual language resources and the auxiliary tools previously mentioned, which will be detailednext, are also going to be implemented in the method, as other authors said that the use of such tools,when not contributing to student learning, was useful in at least heightening students’ interest in the course[4][5][8].

In search of a more contextualizing approach to the course, the use of LEGO MindStorms robots has beenchosen as a complimentary tool, and will be implemented in some classes. These robots are part of a line ofLEGO toys created to attend a bigger public, from kids that play with the traditional bricks to adults wholook for more mature projects with robotics. Along with the traditional bricks, this line also includes piecesshaped like articulations, beams, etc, so that it is easier to build robots and machinery, for example. The setalso comes with a powerful computer programmable brick, with inputs for sensors and outputs for servomotors. So, the user can program his own robot or machine, being able to choose among a great variety ofdifferent sensors and motors produced by LEGO and other partners, such as Mindsensors.

MindStorms NXT robots can be used in a wide variety of projects, from the simpler to more complexones, as it can be seen in lots of videos on the Internet, where users build from small cars to extremelybig machineries which sort and pack bubble gums by color, according to the machine operator’s desire.Furthermore, the programmable brick can be programmed using a wide variety of programming languages,ranging from an extremely simple, yet powerful, visual programming language called NXT-G (using asoftware intended for kids) to professional programming languages such as an Assembly-like language calledNBC (Next Byte Codes). As observed by Schep [8], LEGO MindStorms sets are also less intimidating tostudents due to their familiarity with the product, besides being easy to use, finding in the market and,specially, being reusable.

III. USING THE RESOURCES IN THE COURSE

The project of applying those auxiliary resources consists of splitting the course in two phases, where thefirst one is dedicated to algorithm development and the other to real programming. We believe that forcingthe student to develop the algorithm even before knowing how to code could create a good habit that wouldend with the “coding before designing” problem previously mentioned.

The first part of the course in this new method should be focused around developing an algorithm tosolve some problems. As said by Westphal [5], many tutors use only pseudo-code. However, although thisapproach is useful to some students, it is very confusing for others, as pseudo-code is very close to naturallanguage and has a very loose syntax, a novice student usually takes too long to understand what it isused for. Besides, it is more difficult to visualize a written algorithm when you still don’t know some basiccomputing principles, such as loops and variables. So, for beginner students, visualizing an algorithm in adiagram can be more intuitive and easier to learn.

For this part, the software LabVIEW has been chosen. This tool was developed by scientists and engineers,and is widely used in laboratories for virtual instrumentation. This software uses an interface based indiagrams, where the user insert blocks and wire them using virtual lines. After assembling a diagram,it can be simulated to analyze if an algorithm is correct before proceeding with code writing. Besides,LabVIEW allows demonstrating some concepts to students such as variables, vectors and loops, along withother structures, what could make learning a language easier. Another advantage of using LabVIEW is thatstudents would have a first contact with a tool that is used in many industries and also at the university,including some classes they might have to take later on in the course.

Along with LabVIEW, Lego MindStorms robots will be used in some classes. According to Schep [8], theuse of robots allows the beginner programmer to notice logic errors and their location easier. Furthermore,Hasker [4] affirms that although he did not have any significant increase in apprenticeship, the robots helpedincrease students’ interest in the classes, what is expected due to the contextualizing treatment, which wouldinvolve programming with practical applications. So, it is reasonable to believe that the robots, associatedwith the other tools present in this method, could not only result in increased interest by the students, but alsoan increase in apprenticeship by the beginner ones. As LabVIEW has native support, without any additionaltool except the installation of an add-on, with LEGO MindStorms robots, there would be no additionaltrouble when integrating both resources.

According to Westphal [5], student familiarization with LabVIEW is not a time consuming task, and withten to twenty minutes of explanation about the software students could already use the essential parts withmoderate proficiency. As the robots are already integrated with LabVIEW, this familiarization time shouldnot be much higher than observed above [5].

Page 4: The Use of Auxiliary Resources on Introductory Computing · PDF fileThe Use of Auxiliary Resources on Introductory Computing Courses for Engineering F.C.N. Campos , G.S. Olguin Polytechnic

The idea is that in this part of the course the student would learn to develop the algorithms withoutworrying about syntax, just logic. This allows a general point-of-view of the problem, as stated by Schep[8], turning programming easier as the use of the robots allow immediate feedback when a logical error iscommitted.

Fig. 1. LabVIEW screenshot.

As C programming language is required later in the course, it is impossible not to cover it in the IntroductoryComputing course. Nevertheless, with an already consolidated knowledge in algorithm development, thestudent may already be introduced to a formal programming language. So, in this second part of the course,the student would be encouraged to, using the algorithm development and logical reasoning previously seen,proceed to code writing.

Usually, the programming environment used in the Introductory Computing course is Dev-C++, fromBloodshed. However, this is a professional development environment, and as Hasker said in [9], studentsusually face difficulties using them due to unclear error messages, involving terms unknown to them, andalso due to the complex interface, which demands a certain time to adapt to it. The idea defended by Haskerin [9] is that students that do not know how to program should not have to struggle with a complex interfaceand unclear error messages. Furthermore, those problems bring more trouble to the professor, who would notonly have to teach how to code but also help the student decode the error messages, creating an unwanteddependency relationship between professor and student to fix syntax errors.

Another idea would be, again, to use LEGO MindStorms NXT robots to help students. According to Schep[8], the use of those robots contributed to show the difficulties faced by beginner programmers, such as weaklogical reasoning, coding before designing and lack of attention to details. The robots also allowed studentsto have immediate feedback on errors of logic, as mentioned before. So, our programming environment alsoneeds an easy-to-use LEGO Mindstorms NXT programming feature.

The LEGO MindStorms NXT set comes with a software named RIS (Robotics Invention System), devel-oped by National Instruments. However, this is a graphical programming software for kids. Many alternativeshave already been developed for various languages, like NBC (Next Byte Code, for Assembly-like program-ming) and NXC (Not eXactly C, for C-like programming), pbLua (for Lua programming), LeJOS (forJava programming), RobotC (commercialized by Lego, for C and C++ programming), and many others.Hasker, in [4], also developed, for his C++ programming environment specially developed for IntroductoryComputer courses described in [9], an additional feature which allowed RCX (NXT predecessor) robots tobe programmed directly, with just one click. This great variety of possibilities, as said before, is anothergreat advantage of the robots, as the majority of the programming languages commonly used in IntroductoryComputing courses already have some kind of development tool that can be used.

The chosen tool was the NXC (Not eXactly C) compiler, with the Bricx Command Center 3.3 (BricxCC)IDE (Integrated Development Environment) [10]. This IDE has been specially developed for programmingrobots, supporting not only the NXT series (using NBC, NXC and NPG languages), but many other seriesof programmable bricks, including NXT’s predecessor, RCX.

The main reason why those tools were chosen is due to their support to C programming language, whichis the one used today in the Introductory Computing course at the Polytechnic School of the Universityof Sao Paulo. Another advantage that led to this choice was Schep [8] already having successfully usedNQC (Not Quite C, also used for C-like programming), which is the previous version of NXC for RCXprogramming. Besides, BricxCC’s interface is quite simple, so that the student doesn’t have to struggle withthe environment, and the error messages generated by the NXC language compiler are easily interpreted,although not as self-explanatory as Hasker’s HiC messages [9]. BricxCC also has complete support to the

Page 5: The Use of Auxiliary Resources on Introductory Computing · PDF fileThe Use of Auxiliary Resources on Introductory Computing Courses for Engineering F.C.N. Campos , G.S. Olguin Polytechnic

NXT series, recognizing the robot automatically, and featuring one-click code compile and download andfirmware upgrades. Compiled code can be downloaded to the programmable brick through USB cable orvia Bluetooth interface. BricxCC and NXC compiler also have almost full compatibility with the NXTstandard firmware, without any need of firmware upgrade, so that we can take advantage of the stability,interface and, most importantly, the LabVIEW support, of the standard NXT firmware. However, to be ableto use multi-dimensional arrays and native shifting and waiting operations, another firmware, available atBricxCC’s website, must be installed.

One problem encountered, however, is that almost no programming language for the NXT brick supports thepointers feature of the C language. As pointers are one of the topics covered in the Introductory Computingcourse at the Polytechnic School of the University of Sao Paulo, Dev-C++ from Bloodshed will be used atleast in the end of the course, so students can practice pointers.

Fig. 2. BricxCC screenshot.

IV. RESOURCES APPLICATION

Today, the Introductory Computing course lectured at the Polytechnic School of the University of Sao Paulocovers the following subjects during a one-semester course, corresponding to approximately 32 classes, 100minutes long each:

• Brief history of Computing• Computers: basic units, instructions, stored program, addressing, machine-code programs• Concepts of algorithmic languages: expressions, sequential, selective and repetitive commands.• Input and Output• Subprograms: functions• Structured variables: vectors and matrixes• Identifier scopes• Programming and code debugging practice

All topics above are seen in theoretical classes only. The only exception is the last topic, which refers tothe tasks students must do on off-class hours and individually.

In [4], Hasker affirms having a successful experience with one-hour long laboratories and three theoreticalclasses per week. Using a similar approach, half the classes could be exclusively theoretical, while the otherhalf could be exclusively practical. So, each week students would attend to 100 minutes of theoretical classesand 100 minutes of practical classes. Those practical classes, differently from McKenna’s approach in [2],will be held in groups of four students, stimulating teamwork and brainstorming.

So, there would be approximately sixteen practical lessons along the semester. The following themedistribution could be used, indicating both the theoretical class theme and the practical class theme. The firstweek, exceptionally, would be a theory-only week, because there is a higher concentration of theoreticaltopics in the beginning of the course, while the second week would be entirely practical, as it would beinteresting that the student practiced well how to develop algorithms visually before being introduced to aformal written language.

• Week 1:– Theory 1: Brief History of Computing

This class is about the history of computing, since the abacus, valve-based computers until modern

Page 6: The Use of Auxiliary Resources on Introductory Computing · PDF fileThe Use of Auxiliary Resources on Introductory Computing Courses for Engineering F.C.N. Campos , G.S. Olguin Polytechnic

silicon-based computers.

– Theory 2: ComputersIn this class, students would be introduced to the computers structure, how their componentswork, how a program is stored, numerical bases, conversions between numerical bases and a briefintroduction of problem solving using algorithms.

• Week 2:– Lab 1: Introduction to LabVIEW and Sequential Algorithms

In this laboratory, students should be presented to LabVIEW and taught how to use it, for example,how to place components, how to wire them, using the software to build an algorithm and recordit on the robot. Afterwards, students would be instructed to build a simple algorithm to solve aproblem, for example making the robot move forward, stop and come back. Then, they would learnwhat a loop is and another problem would be proposed. At the end of the class, a more complexproblem should be proposed which would require all structures seen in the class.

– Lab 2: CompetitionIf the previous lab session was fully executed, this second lab one of the week could be acompetition. According to Verhoeff [11], competitions must be stimulated, as they usually heightenstudents’ enthusiasm about the subject. So, a problem could be proposed to be solved by the groupsthrough algorithm development using LabVIEW. To heighten even more students’ enthusiasm, itis also proposed the use of a contextualizing theme for this challenge. At the end of the lab, thefirst group to present the most efficient algorithm would be the winner.

• Week 3:– Theory 3: Introduction to C

This class would present students how the structure of a C code is, how the code organization is,etc.

– Lab 3: Introduction to BricxCC and code writingInitially, students will be presented to BricxCC’s interface and learn how to execute more essentialoperations, such as compiling a simple code and downloading it to the robot. At the end of thisclass, students should be able to write codes to solve simple problems.

• Following weeks:– Theory: Follows the rest of the topics– Laboratories: Practical classes should follow the theoretical class, and always increase the com-

plexity of codes that should be written by students. Also, the robot used should be different ineach class to avoid students getting bored with it.

A. Parallel Activities

The room where practical classes are held will be kept open on after-class hours according to studentscheduling, so that they can use LabVIEW and the Mindstorms sets for studies, with the aid of moreexperienced students.

Page 7: The Use of Auxiliary Resources on Introductory Computing · PDF fileThe Use of Auxiliary Resources on Introductory Computing Courses for Engineering F.C.N. Campos , G.S. Olguin Polytechnic

B. Course Tasks

The course programming tasks must include more difficult problems than the ones practiced in thelaboratory classes, to stimulate brainstorming between students.

One possible task, for example, which has already been designed, would be to propose students to programa robot similar to a CD player’s optical unit, using the LEGO Mindstorms’ light sensor to read a paper disc,as shown in the image below.

Fig. 3. The LEGO Mindstorms Disc Reader Robot.

In this challenge, each paper disc consists of three circular tracks, and it should be read like a commonCD, spirally, beginning from the inner ring and moving to the outer ring. Each bit is represented by a blackspot (bit 1) or a white spot (bit 0), like in a CD, where bits are represented by “bumps”. The beginning ofthe disc is marked by a single bit in the inner ring.

Students are asked to suppose this disc is a musical disc, in which each musical note is represented bythree bits. Given the table of correspondence between sequences of three bits and a note, the student shouldwrite a code to seek the beginning of the disc and play the melody using the programmable brick’s audiooutput.

With this task, the student would be able to put into practice a great part of his computing knowledge,such as binary logic, while studying the subject using a real model.

V. CONCLUSION

According to bibliographical references and all experiences already made in the area, teaching a visuallanguage and using it to improve logical reasoning before teaching a formal programming language - withthe aid of a tool which brings together computing knowledge and engineering practice - develops interestingteaching situations.

The resources shown in this article, such as their use, are now being studied for implementation of thesubject. With the new method, it is expected to achieve a higher interest from the students to the course,so that the aversion showed by those who do not intend to follow a career in Electrical or ComputingEngineering would drop considerably.

Furthermore, it is also expected that, with better logical reasoning and problem solving techniques, latercourses with high flunking rates that depend on the concepts taught in Introductory Computing, such asNumeric Calculus, become less frightening to students.

In the near future, results achieved with this proposal shall be published.

VI. ACKNOWLEDGEMENTS

We would like to thank the people at Edacom Enterprise (Lego Educational Brazil) for their support andfor lending us a Mindstorms Educational set.

REFERENCES

[1] B. E. Dunne, A. J. Blauch, and A. Sterian, “The Case for Computer Programming Instruction for All Engineering Disciplines,”Proceedings of the 2005 American Society for Engineering Education Annual Conference & Exposition. Retrieved January 23,2008, from http://claymore.engineer.gvsu.edu/˜steriana/Publications/BDunne.ASEE2005.pdf.

[2] A. F. McKenna, J. Nocedal, R. Freeman and S. H. Carr, “Introducing a Constructivist Approach to Applying ProgrammingSkills in Engineering Analysis,” 35th ASEE/IEEE Frontiers in Education Conference, Session T3H, pp. 20-25, October 2005.

[3] A. Gomes and A. J. Mendes, “Learning to program - difficulties and solutions,” 10th International Conference on EngineeringEducation, Session F1B, p. 283, September 2007.

[4] R. W. Hasker, “An Introductory Programming Environment for LEGO MindStorms Robots.” Retrieved January 16, 2008, fromhttp://www.micsymposium.org/mics 2005/papers/paper87.pdf.

Page 8: The Use of Auxiliary Resources on Introductory Computing · PDF fileThe Use of Auxiliary Resources on Introductory Computing Courses for Engineering F.C.N. Campos , G.S. Olguin Polytechnic

[5] B. T. Westphal, F. C. Harris Jr. and M. S. Fadali, “Graphical Programming: A vehicle for teaching computer problem solving,”33rd ASEE/IEEE Frontiers in Education Conference, Session F4C, pp. 19-23, November 2003.

[6] Brazilian Ministry of Culture and Education, “Engineering National Curriculum Guidelines.” Retrieved January 29, 2008, fromhttp://portal.mec.gov.br/cne/arquivos/pdf/CES1362.pdf.

[7] P. Freire, Pegagogy of the Opressed, Chapter 3. Retrieved January 21, 2008, fromhttp://marxists.anu.edu.au/subject/education/freire/pedagogy/ch03.htm.

[8] M. Schep and N. McNulty, “Use of Lego Mindstorm Kits in Introductory Programming Classes: A Tutorial,” Journal ofComputing Sciences in Colleges, vol. 18, issue 2, pp. 323–327, December 2002.

[9] R. W. Hasker, “HiC: A C++ Compiler for CS1,” Journal of Computing Sciences in Colleges, vol. 18, issue 1, pp. 56–64, October2002.

[10] Bricx Command Center website. Retrieved January 31, 2008, from http://bricxcc.sourceforge.net.[11] T. Verhoeff, “The Role of Competitions in Education.” Retrieved April 21, 2008, from

http://olympiads.win.tue.nl/ioi/ioi97/ffutwrld/competit.html.[12] pbLua website. Retrieved January 31, 2008, from http://www.hempeldesigngroup.com/lego/pbLua.[13] NBC/NXC website. Retrieved January 31, 2008, from http://bricxcc.sourceforge.net/nbc.[14] LeJOS website. Retrieved January 31, 2008, from http://lejos.sourceforge.net.