Powerpoint exploring the locations used in television show Time Clash
A Teamwork-based Approach to Programming Fundamentals with Scheme, Smalltalk & Java
1. 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
2. Introduction Languages & Tools
Contents
Didactic Elements Reflections
5. 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
6. 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
7. Programming Fundamentals I & II
DF1 DF2
Personal Group
Lectures
Project Project
Scheme
DF
Pair
Lectures Lectures Group Project
Project
Smalltalk Java
9. 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
10. 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)))
11.
12. 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
13. 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)
15. 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
16. 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
17. Design Fests
‣ Afternoon long sessions with TAs & Profs
‣ Students work in groups to tackle more
complex problems
‣ Tetrisfest
18. 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”
19. Group Projects
‣ 3-5 week long projects on selected topics
‣ Too hard to describe.. Back to USI
22. 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!
23. 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..