1 / 8

Computer Science 101 Preparing programmers to be architects

Computer Science 101 Preparing 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.

Download Presentation

Computer Science 101 Preparing programmers to be architects

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Computer Science 101Preparing programmers to be architects Michael Huth, mrh@doc.ic.ac.uk Computing, Imperial College

  2. 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.

  3. 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

  4. 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”.

  5. 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 …

  6. Ability to formally model design

  7. 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.

  8. 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.

More Related