80 likes | 192 Vues
This talk by Michael Huth from Imperial College addresses the challenges of teaching programming to first-year students with diverse skill levels. It explores the importance of marrying theoretical concepts with practical application in software architecture, particularly in the context of open and distributed systems. The presentation outlines both traditional and modern learning outcomes, emphasizing the need for students to specify, implement, and test programs while also learning to navigate and design within complex software environments. Assessments will gauge the effectiveness of these educational strategies over time.
E N D
Computer Science 101Preparing programmers to be architects Michael Huth, mrh@doc.ic.ac.uk Computing, Imperial College
Outline of talk • Challenges in teaching first-year programming. • Learning outcomes in the “slashdot” world. • Strategies for realizing those outcomes. • Outlook: a marriage of theory and practice.
Traditionally, incoming students have dramatically different skills; programming involves logic and artistic activity; real-world languages are too rich to be covered in full. Today, software is open and distributed; requires architectural design and analysis; interfaces across languages. Old and new challenges
Traditional outcomes Be able to • staterequirements and specifications of programs: “The call fac(m) returns the factorial of m, given that m >= 0.” • implement specifications: int myFac(m) { if (m==0) {return 1;} else { return m * myFac(m-1);}} • test and reasonabout implementations: Run myFac on “good” test values; prove that myFac “works”.
New outcomes • Extend old outcomes to open, distributed programs: try { Url u = Inbox.getUrl(); } catch(exception e) { print “URL not found”;} AudioClip a = new Audioclip(); a = Url.downloadclip(u); if (this.hasLicence(a)) {Realplayer.playClip(a);} else { BigBrother.notifyViolation(this,u,a);} • And ensure the …
Strategies: students … • Week 1-5: … specify, implement, and test traditional programs in open, distributed language. • Week 6-10: … learn to use distributed language features; get exposuretodesign; • Week 11-15: Transfer acquired skills of first block to second one. • Assessment: Students evaluate the approach 1, 2, and 5 years after course completion.
An unexpected marriage • Reality check: teach software-engineering languages early on. • Key language features: abstract, complex, and mathematical. • “Hot” principles of practice (e.g. B2B, P2P): realized in very abstract formalisms. • Opportunity: marrytheoryandpractice in a key CS course.