AY 2007-2008/Sem-1/Principles of Programming

From IIITM-k-wiki

Jump to: navigation, search

Contents

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

pop.mm

Flash plugin or Javascript are turned off. Activate both and reload to view the mindmap

Course Calendar

POP Calendar

Subscribe this 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


Notes

Homeworks

Resources for Principles of Programming course

Personal tools
<
May 2012
>
SMTWTFS
12345
6789101112
13141516171819
20212223242526
2728293031
Events Upcoming
More ยป