Home · Schedule · Tracks · Recommendations · Registration

Educators' Symposium

Educators' Symposium

Monday, 27 October – 8:30-17:30 Full day

8:30 - 8:40
Welcome and Introduction— Educators' Symposium Chair

8:40 - 9:20
Invited Talk I: Things They Would Not Teach Me of in College: What Microsoft Developers Learn Later

Eric Brechner, Microsoft Development Training, Microsoft, ericbrec@Microsoft.com

There has always been a gap between what college graduates in any field are taught and what they need to know to work in industry. However, today the gap in Computer Science has grown into a chasm. Current college hires who join Microsoft development teams only know a small fraction of their jobs and cannot be trusted to write new code until they have received months of in-depth training. The cause of this growing gap is a fundamental shift in the software industry, which now demands higher quality and greater attention to customer needs. This paper presents five new courses to add to computer science curriculums to help close this gap.

9:20 - 10:00
Invited Talk II: An Educational Perspective on Database Management Systems and Object-Oriented Methodology: A 12 Year Journey

Shahram Ghandeharizadeh, University of Southern California

This presentation is based on the speaker's experience of teaching OO methodology in the Computer Science Department of the University of Southern California. It describes OO concepts that relate to database management system. Several fundamental student misperceptions and their solutions have been addressed. A set of tools that enhance the educational activities are discussed.

10:00 - 10:30
Coffee Break

10:30 - 12:00
Paper Presentation I

10:30 - 11:00
Methodology First and Language Second-A way to Teach OO

Haibin Zhu, Nipissing University, haibinz@nipissingu.ca
MengChu Zhou, New Jersey Institute of Technology, zhou@njit.edu

C++ is a very successful object-oriented language. It is a required language for more and more students. It takes great effort and practice for these students to learn how to program in C++ and how to make object-oriented programs. One potential failure is that they have learned programming in C++ but do not know how to program in an object-oriented (OO) style. To avoid such failures, this paper proposes that first an object-oriented methodology is taught, and then the language itself. A six-step approach to teach the OO methodology is presented, followed by some innovative ways to teach different mechanisms in C++. In this way, students can master both object-oriented programming and C++ programming. The proposed teaching method is applicable to teaching other languages like Java and C#.

11:00 - 11:30
Rethinking Computer Science Education from a Test-First Perspective

Stephen Edwards, Virginia Tech, edwards@cs.vt.edu

Despite our best efforts and intentions as educators, student programmers continue to struggle in acquiring comprehension and analysis skills. Students believe that once a program runs on sample data, it is correct; most programming errors are reported by the compiler; when a program misbehaves, shuffling statements and tweaking expressions to see what happens is the best debugging approach. This paper presents a new vision for computer science education centered around the use of test-driven development in all programming assignments, from the beginning of CS1. A key element to the strategy is comprehensive, automated evaluation of student work, in terms of correctness, the thoroughness and validity of the student's tests, and an automatic coding style assessment performed using industrial-strength tools. By systematically applying the strategy across the curriculum as part of a student's regular programming activities, and by providing rapid, concrete, useful feedback that students find valuable, it is possible to induce a cultural shift in how students behave. (Topics: "How to teach C# in CS Curriculum," "How to become a good OO programmer," ".NET technology and CS/CIS Curriculum," "Whether and how to teach J2EE" and more.)

11:30 - 12:00
Object Oriented Principles in CS1

Carl G. Alphonce and Philip R. Ventura, University at Buffalo, SUNY, alphonce.pventura@cse.buffalo.edu

Teaching object-oriented programming in CS1 is hard. Keeping the attention of CS1 students is perhaps even harder. In our experience the former can be done successfully with very satisfying results by focusing on the fundamental principles of object-orientation, such as inheritance, polymorphism and encapsulation. The latter can be done by having students create graphical event-driven programs. Teaching graphics can easily distract students and certainly takes time away from the fundamentals being taught. We use Java as a vehicle for OO instruction, but rather than expose CS1 students to the intricacies of Swing we employ an elegant and small graphics package called NGP. NGP, developed at Brown University by Andries van Dam, allows students to create event-driven graphical programs using only inheritance and method overriding. We describe how we use NGP to enhance rather than detract from our teaching of fundamental OO principles.

12:00 - 13:00
Educators' Symposium Lunch and Round Table Discussions

13:00 - 14:30
Paper Presentations II

13:00 - 13:30
Reality Abstraction and OO Pedagogy: Results From 5 Weeks in Virtual Reality

John Towell, Carroll College, jtowell@cc.edu
Elizabeth Towell, Carroll College, etowell@cc.edu

A five week program which involves exposure to a complex object-oriented virtual environment was evaluated for efficacy in learning fundamental object oriented principles. Students(n=57) from two CS1 classes were asked to write essays on their knowledge of object-oriented programming concepts following their participation in the program. A systemic method for evaluating student knowledge was followed by rating the student's knowledge on a one-to-five rating scale. The results indicated that the students understood, by virtue of their ability to write intelligibly, the concepts of abstraction, inheritance and method override. Demonstrated knowledge of the concept of state was far less convincing.

13:30 - 14:00
Teaching Polymorphism with Elementary Design Patterns

Joe Bergin, Pace University, berginf@Pace.edu

Polymorphism is often treated as an advanced topic by educators. Many feel that if statements are in some sense more "fundamental" to computing. On the contrary, polymorphism is both fundamental to object programming and is an elementary topic that can be easily understood by students. Previous papers have shown how role play exercises can remind students that they already have a deep understanding of dynamic polymorphism. The question then becomes how do we find effective teaching techniques to present this topic when we move from the level of metaphor to that of programming. A few elementary patterns can be used to teach this topic even before the student is introduced to ad-hoc selection with if statements. Teaching these patterns early has the added benefit that they are pervasive in the Java libraries, so understanding them eases the student's later work.

14:00 - 14:30
ProfessorJ: A Gradual Intro to Java Through Language Levels

Kathryn Gray, University of Utah, kathyg@cs.utah.edu
Matthew Flatt, University of Utah, mflatt@cs.utah.edu

In the second-semester programming course at the University of Utah, we have observed our students suffering unnecessarily from a mismatch between the course content and the programming environment. The course is typical, in that it exposes students to Java a little at a time. The programming environments are also typical, in that they report compilation and run-time errors in the jargon of professional programmers with references to the full Java language. As a result, students rely heavily on teaching assistants to interpret errors, and valuable classroom time is wasted on diversions.

ProfessorJ is our new programming environment that remedies this problem. Like other pedagogical environments, such as BlueJ and DrJava, ProfessorJ presents the student with a simplified interface to the Java compiler and virtual machine. Unlike existing environments, ProfessorJ tailors the Java language and error messages to the students' needs. Since their needs evolve through the course, ProfessorJ offers several language levels, from Beginner Java to Full Java.

14:30 - 15:00
Doctoral Symposium and Other Conference Reports

15:00 - 16:00
Poster Session and Coffee Break

Preparing Undergraduate Students for Java Certification

Arial Ortiz, ITESM, Campus Estado de Mexico, arial.ortiz@itesm.mx

Java certification promises to make our students more marketable once they graduate. The truth is that certifications in general offer significant advantages, but it is important not to overestimate their benefits. In this paper, we describe our experiences on teaching a workshop aimed at preparing undergraduate students for the Sun Certified Java Programmer exam. But first, we layout the real value of IT certifications and explain the different certification options available for Java technology.

Reuse of Teaching Components, a UML-Based Approach to Delivering and Managing Academic Courses

Luis Palomino Ramirez, ITESM, Campus Guadalajara Department of Computer Science, lpalomin@itesm.mx
Juan Antonio Vega Fernandez, ITESM, Campus Guadalajara Department of Computer Science, javega@itesm.mx

In this paper we present a model for the representation of academic courses based on the organization and semantic relation of reusable teaching components using the unified modeling language. We describe an application of the model to cs101, but we believed that the model can be applied to any subject content of any discipline. Results indicate that by following this model, the knowledge of more experienced teachers can be stored in its representation and the course components are easier to reuse by less experienced teachers.

A Pair-Programming Experiment in a Non-Programming Course

Edward Gehringer, North Carolina State University, efg@ncsu.edu

Pair programming is a concept where two programmers work side by side at the same computer, writing code jointly. One of them, called the driver, is in control of the keyboard and mouse. The other, called the navigator, observes what the driver is doing and offers advice. It is the driver's job to write the code. The navigator has a chance to observe the larger picture, evaluating the driver’s code for correctness of design and implementation. Studies have shown that pair programming is very effective. Two programmers can finish a task in little over half the elapsed time that a single programmer takes. And the quality of the code measured in terms of absence of defects is much higher.

In the past few years, pair programming has made inroads into industry and into programming courses. However, it has not typically been used in courses that teach subjects other than programming or software engineering, nor has it been used in the analysis of experimental results. This paper reports on an experiment in a combined senior/masters level computer architecture class, using Hennessy and Patterson's Computer Architecture: A Quantitative Approach as a text. Students were required to implement three projects simulating various aspects of a micro-architecture (cache, branch predictor, dynamic instruction scheduler). Then they engaged in an experimental analysis to find the best configuration in a design space. Students reported high levels of satisfaction with the experience of pair programming. Pair programmers obtained significantly higher grades on Project 1; however, differences on the other projects were not statistically significant.

A Framework for Building Language Interpreters

Alan Durham, University of São Paulo, Brazil, durham@ime.usp.br
Edson Sussumu, University of São Paulo, Brazil, sussumu@novum.com.br
Arlido Flavio da Conceicao, University of São Paulo, Brazil, arlido@ime.usp.br

This work presents an Object-Oriented framework for language interpreters development. We use this framework to implement different programming language paradigms, including interpreters for imperative paradigm, object-oriented paradigm and logic programming. Also, we shows an architecture that facilitates the teaching of programming languages by clarifying differences and commonalities of programming languages.

16:00 - 17:30
Fish-Bowl Panel Discussion on the Theme "State of the Art in OO Education— Benefits, Problems and Their Possible Solutions"