This course is an introduction to programming and problem solving in Python. It does not assume any prior knowledge of programming. Using some motivating examples, the course quickly builds up basic concepts such as conditionals, loops, functions, lists, strings and tuples. It goes on to cover searching and sorting algorithms, dynamic programming and backtracking, as well as topics such as exception handling and using files. As far as data structures are concerned, the course covers Python dictionaries as well as classes and objects for defining user defined datatypes such as linked lists and binary search trees.
INTENDED AUDIENCE:Students in any branch of mathematics/science/engineering, 1st yearPREREQUISITES: School level mathematics.INDUSTRY SUPPORT: This course should be of value to any company requiring programming skills.
Week 1 Informal introduction to programmin, algorithms and data structures viagcd Downloading and installing Python gcd in Python: variables, operations, control flow - assignments, condition-als, loops, functions
Week 2 Python: types, expressions, strings, lists, tuples Python memory model: names, mutable and immutable values List operations: slices etc Binary search Inductive function denitions: numerical and structural induction Elementary inductive sorting: selection and insertion sort In-place sorting
Week 6 Backtracking: N Queens, recording all solutions Scope in Python: local, global, nonlocal names Nested functions Data structures: stack, queue Heaps
Week 7 Abstract datatypes Classes and objects in Python "Linked" lists: find, insert, delete Binary search trees: find, insert, delete Height-balanced binary search trees
Week 8 Effcient evaluation of recursive denitions: memoization Dynamic programming: examples Other programming languages: C and manual memory management Other programming paradigms: functional programming