AY 2007-2008/Sem-1/Principles of Programming
From IIITM-k-wiki
Course Objectives
The aim of this course is to teach you, the student, the fundamental concepts underlying programming and connect those concepts to software engineering practices. The course will introduce concepts essential for understanding programming from a perspective that emphasizes computational ideas (like interpretation, interaction, and persistence, for example) rather than grinding through language syntax.
The approach used in the course will be hands-on and will involve working with real web applications. You will design and implement various program and data processors. The design of these processors will be based on abstraction principles for data, state, control, interaction and persistence.
The course uses the Javascript language (no relation to Java), and Scheme. Scheme's simple syntax makes it easy to write programs that test ideas about data abstraction, higher-order functions, and recursion. On the other hand, various language features of Javascript and its widespread adaptation in the Web browsers render it a good platform during the laboratory hours, which in turn serves as the future development environment for Web 2.0 applications. Javascript's support for higher-order functions, objects, and interaction through AJAX, and its support for interpretation in a web browser makes it well-suited for illustrating the fundamental ideas of computing. As a student, you will find it useful to be introduced early to this new style of interactive programming. The interaction is two fold here: first with the user, in terms of mouse and button events, etc., and second, with a back-end server that stores persistent data, or other programs, through web services.
Previous Offerings of this course
Mindmap of the course
Course Calendar
Contact Hours
- Lectures: Wed 2pm - 5pm (may extend to 6pm on a few occasions). Park Centre classroom
- Discussion: Tue 2pm - 3:10pm Park Centre classroom
- Lab: Tue 3:25pm - 4:35pm (supervised), 4:50pm-6pm (unsupervised)
Labs will be used to complete homeworks assigned on a weekly basis.
Instructors and Office Hours
Principal Instructor
- Venkatesh Choppella
- Office Hours: Friday 3pm - 5pm Park Centre
- Email: choppell_AT_iiitmk.ac.in
Associate Instructors
- Dr. Raj Mathew
- Office Hours: Thursday, 3.30pm to 5.30pm
- Email: rajmathew@iiitmk.ac.in
Teaching Assistant
- Girish N Gopal
- Office Hours: Friday, 9.30pm to 11.30pm
- Email: girish-pg6[AT]iiitmk.ac.in
Syllabus
The lectures will try to more or less conform to the syllabus below. However, some minor adjustments may have to be made to keep everything within the boundaries of the semester.
1: Primitive data, expressions and simple functions
- Primitive data types and expressions
- expressions
- simple functions
2: Designing Programs and Structured Data
- Designing Programs
- Structured Data
- Simple examples of structured datatypes:
- tuples in Scheme using list
- constructors, destructors,
- datatype-verifiers (tagging)
3: Scope and extent
- Scope: Local variables
- Environments
- Composing functions
- function call stacks
- Closures
4: Inductive Data, Recursive algorithms
- Numbers
- Lists
- Trees (XML and DOM)
5: Contracts, Invariants and Exceptions
- Pre-conditions
- Post conditions
- Invariants
6: Data structures and Algorithms continued
- Searching, binary search
- Sorting: insertion-sort, merge-sort, quick-sort
7: Higher-order Functions
- list combinators: map, reduce, fold
- iterators
8: State, Mutation and sequencing
- Variable assignment
- Structure mutation
- sequential execution
9: Recursion, Tail Recursion, and Iteration
- Converting tail recursion to iteration
10: Objects
- Objects in Javascript
- Prototyping
- Implementing an object system in Scheme using environments
11: Interaction and Control
- Exceptions
- Event handlers
- Observers
12: Tabular and Relational data
- Query languages
- Persistence
Grading
- Homeworks 25%
- Quizzes 25%
- Midterm exam 25%
- Final exam 25%
Homeworks
Homework problems will assigned on a weekly basis. These problems will typically consist of exercises, or building a small programming component, or the modification/extension of an existing component.
Submission of Homeworks
Homeworks will be submitted through moodle.
Evaluation of Homeworks
Homeworks will be evaluated based on their submission and an oral exam, which will be conducted on a periodic (not necessarily weekly) basis. In the oral exam, the student will have to answer question(s) based on the homework.
Lecture, Discussion and Home work cycle
Lectures will be held on Wednesdays. Homework based on the lectures will be announced the same day. Discussion and lab sessions on the homework will be on Tuesday (of the next week). But students are advised to work on the homeworks immediately after their announcement. The homework will be due on Fridays 11:59pm, 3 days after the discussion and lab. Late home works will be accepted till 2 weeks after the deadline but with reduced credit (50%).
Online Discussions regarding homework
Online discussions about the homework are encouraged and will count towards class participation. However, please do not post queries asking people to solve your homework!
Forum
The forum for this course is popjs-2007-iiitmk@googlegroups.com. Anyone is allowed to post to this forum. You can subscribe to this mailing list by visiting http://groups.google.com/group/popjs-2007-iiitmk
When you post messages, please include in the subject line one or more of the following tags (separated by spaces and enclosed in square brackets). You may also invent your own tags.
- iiitmk -- posts specific to the course offered at IIITM-K
- pop -- general discussions about Principles of Programming
- js -- javascript related issues
- env -- general discussion about firefox tools and environments
- ajax -- issues related to ajax
- teaching -- issues related to how to teach a topic or concept
Here is an example of a Subject Line:
[js teaching] How to teach closures in Java Script
RSS Feed from the forum
<rss>http://groups-beta.google.com/group/popjs-2007-iiitmk/feed/rss_v2_0_msgs.xml?hl=en|short|max=15|title=Course Feeds</rss>
Quizzes
At the end of the discussion session, there will be a short quiz (10 or 15 minutes duration).
Quizzes will be held on the following dates (Tuesday discussions)
- Sep 18
- Sep 25
- Oct 30
- Nov 13
- Nov 27

