# Python for Fine Programmers

- Description:

This course will provide an introduction to programming using Python^{TM}for motivated students with a little or no prior experience in programming.

The course will cover the main problem-solving/algorithm strategies and give training in Python by implementing the strategies discussed in the lecture.

As it is said that one can become a fine programmer either by:

(i) Years of programming**OR**(ii) Doing some programming along with an algorithm course.

This course lets the students choose the latter option.

**Lecturer:**

Prof. Dr. Ernst W Mayr

**Teaching Assistant**

Sandeep Sadanandan

**Module:**

IN2206

**Area:**

One lecture / Two hours per week in area III (Theoretical Computer Science).

**Time and Location:**

Thursday 10:00 - 12:00

Room 03.09.014

**Exercises:**

Along with the lecture.

**Audience:**

Motivated first or second year students with interest in Algorithms.

**ECTS:**3 points

**Prerequisites:**

Basic idea about algorithms and programming would be helpful but not necessary.

**Recommended for:**

Students of initial 4 semesters.

**Lecture Notes**

Lecture Slides Problem Set Solution Set Lecture 1 Questions 1 Solutions 1 Lecture 2 Questions 2 Solutions 2 Lecture 3 Questions 3 Solutions 3 Lecture 4 Questions 4 Solutions 4 Lecture 5 Questions 5 bst.py, expr-eval.py, sets.py, Kth.py , reverse.py Lecture 6 Questions 6 [graph.py] urlmanager.py (for first two);; graphext.py (add this to the graph class - 3rd problem ;; Solution for the final problem is not explicitly published. Lecture 7 Questions 7 crawler.py;; Read the comments at the end of the file Lecture 8 Questions 8 ... Lecture 9 Questions 9 ... Lecture 10 Questions 10 Lecture 11 Questions 11

**Contents:**

- Tools for computing - basic constructs, Exponents, Logarithm, Automata
- Python - basic types, operators, if/while, Lists

- Programming strategy - Recursion
- Python - Functions, Recursion, for loops, Functions

- Divide and Conquer, Basic data types
- Python - Classes, Object oriented programming

- Regular expression, Hashing
- Python - Regular expressions and dictionaries

- Dynamic Programming
- Python - Strings, String operations.

- Operating system interface, ﬁle operations
- Python - ﬁle i/o, pickling, shelves

- Tools for computing - basic constructs, Exponents, Logarithm, Automata
**References:**

Contents of this course are essentially covered by the following books/locations:- Introduction to Algorithms by Thomas H. Cormen, Charles E. Leiserson, Ron L. Rivest, Clifford Stein.

- Algorithms - by S Dasgupta, C H Papadimitriou, and U V Vazirani http://www.cs.berkeley.edu/vazirani/algorithms.html

- Python Tutorial http://docs.python.org/tutorial/