A Teamwork-based Approach to Programming Fundamentals with Scheme, Smalltalk & Java

Post on 14-Dec-2014

1,821 views 3 download

description

A presentation I gave at the ICSE 2008 education track

transcript

A Teamwork-based Approach to Programming Fundamentals with Scheme, Smalltalk & Java Michele Lanza, Amy L. Murphy*, Romain Robbes, Mircea Lungu, Paolo Bonzini, Marco D’Ambros, Richard Wettel

Faculty of Informatics - University of Lugano, Switzerland

*now with Foundation Bruno Kessler, Trento, Italy

Introduction Languages & Tools

Didactic Elements Reflections

Contents

Introduction

2004: A new faculty of informatics

A remarkable faculty

‣ Low faculty-student ratio (1:6)‣ English as teaching language‣Compliant with ACM curriculum guidelines‣ “Agile” infrastructure & 24/7 accessibility‣Morning Lectures vs. Afternoon “Ateliers”

Lectures

Atelier

The “Missions” of a newborn faculty

‣ “Research Excellence”

‣ “Teaching Innovation”‣ Multiple programming languages to teach programming

‣ Group projects as early as the first semester

‣ Independent exercises + single & pair projects

‣ Design fests

‣ Expert lectures

Lectures

Programming Fundamentals I & II

Lectures Personal Project

DF1 DF2

Group Project

Scheme

LecturesPair

Project

DF

Group Project

Smalltalk Java

Languages & Tools

Scheme - The Functional Clean Slate

‣ Back to square zero‣ Simple syntax‣Dr. Scheme‣ Multimedia libraries

‣HTDP‣ Emphasizes algorithmic

thinking and problem solving

‣ Enforces programming style through a design recipe

The HTDP Design Recipe

; mid-point : posn posn -> posn; takes two posns and produces the posn in the middle between them(define mid-point (lambda (a-posn b-posn) (local ( (define mid (lambda (x y) (/ (+ x y) 2))) ) (make-posn (mid (posn-x a-posn) (posn-x b-posn)) (mid (posn-y a-posn) (posn-y b-posn)))))); tests(equal? (make-posn 2 3) (mid-point (make-posn 4 6) (make-posn 0 0)))

Smalltalk - Pure Objects

‣ The Nygaard keynote: into the water with the babies‣ Java not appropriate: too convoluted‣ Smalltalk: simple syntax, reflective,

interactive, pure, elegant‣Didactic goal: teach concepts

‣ Objects, classes, inheritance, polymorphism, message sending, frameworks

Java - The Mainstream

‣ Teaching from scratch but at a very fast pace‣ Chance to catch up and reinforcement of key concepts

‣ Focus is not on “how to program” but on “how to design (and build) OO programs”‣ TIJ as a reference book‣ High-speed progress (100 pages/week)

Didactic Elements

Individual Work

‣ Learning to program is a personal thing‣ Graded exercises and written exams

‣ Each assignment includes a trivia part (hand-in within 24 hours)‣ Augmented with supervised, non-graded

hands-on exercises‣ Goal: Grasp, not evaluation of mastery, of a concept‣ Guided, step-wise path through a problem towards its solution

Single & Pair Projects

‣ Single projects: the first complex program for many people, after six weeks ‣ 2 weeks of intensive development‣ Students sleep in the lab ;-)

‣ 20% of the final grade

‣ MineDetector

Design Fests

‣ Afternoon long sessions with TAs & Profs‣ Students work in groups to tackle more

complex problems‣ Tetrisfest

Expert Lectures

‣On-Demand lectures on selected topics to provide students with necessary knowledge‣ Example‣ 1 lecture on SVN in PF1 to make students use it

‣ 2 UML lectures in PF2 to make students describe their designs

‣ 1 lecture on “how to give presentations”

Group Projects

‣ 3-5 week long projects on selected topics‣ Too hard to describe.. Back to USI

Reflections

The Role of the Ateliers

‣ All of this hardly possible without them‣ Example: PF1 & Software Atelier 1‣ CVS

‣ LaTex

‣ HTML

‣ Unix

‣ Most of all: project time!

Conclusions

‣ A “one of a kind” experience‣ The conjunction of the “right people” in the “right mindset”

at the “right place”

‣ Highly successful, some of the best students I’ve ever seen came out of this

‣ Created closely knit groups of students, instead of “mass anonymity”

‣Good times..

A great idea, but...

+ + =

R.I.P.