Pop
Principles of Programming, for Web 2.0 era
Using Javascript, the entire course is developed for browser delivery.
Course offering started at IIITM, Trivandrum in the year 2006. This material is being iteratively developed with Prof. Venkatesh Choppella over the years and many offerings. Last offering was in 2010 at IIIT, Hyderabad.
Computer Science courses, especially the introductory ones, need to jump into the Web 2.0 era. We already notice that over a decade now, most programmers jump into learning programming languages, using what may be called as "Bible books" (e.g., Java Bible). What is also of interest is that these learners are independent of university curriculum. There are a number of online resources that cater to these learners. However, most university curriculum and teaching is based on decade old teaching methods using "computers in labs". We feel that it is time to turn teaching CS upside down by first introducing abstract concepts and use browsers to introduce them, letting students use these to put together programs that resemble their every day applications such as gmail, facebook or a spreadsheet like that of Google docs, and as the student gains confidence in CS fundamentals, to introduce later in the later courses low level computing machines, algorithms, etc.
Towards this, we have over the last 2-3 years developed a course called Principles of Programming for the Web 2.0 era. We are also designing a set of 4 courses that together can become a complete CS diploma course.
Methodology includes these features :
Complete course is offered using a browser - Firefox and add-ons. A subset of Javascript and libraries are used to teach programming principles. Principles include types and data abstraction, events and interaction modeling, flow analysis and model-view-controller. The material composes concepts introduced earlier to develop a later one so a student effectively develops a browser based spread sheet towards the end of the course. Students are encouraged to learn utilities like html/css by interacting with each other ; and are asked to use wikis, forums, chat and tools like svn. They are also asked to write test cases for their programs thereby addressing aspects of software engineering, and communication - using Web tools, and user-interface/usability aspects.