> For the complete documentation index, see [llms.txt](https://kgisl.gitbook.io/lab3003/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kgisl.gitbook.io/lab3003/manual/0_syllabus.md).

# COURSE OBJECTIVES

```
To write, test, and debug simple Python programs.
To implement Python programs with conditionals and loops.
Use functions for structuring Python programs.
Represent compound data using Python lists, tuples, dictionaries.
Read and write data from/to files in Python.
```

## Cheat Sheets

* <http://j.mp/pythonCrashCS> - main page for all cheatsheets
* <http://bit.ly/beginnerCS> - beginner Python cheatsheet (variables, strings, etc)
* <http://bit.ly/conditionalCS> - cheat sheet for conditionals (if and while statements)
* <http://bit.ly/functionCS> - cheat sheet for functions (functions)
* <http://bit.ly/testingCS> - cheatsheet for unit testing (unit testing)

## List of programs

| Concept                                                                                                                                      | Sequence         | Objective                                                                                                                                                                                                               |
| -------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Learn Python in 10 minutes                                                                                                                   | lab 0.0          | Blockly Challenge and Turtle Graphics, Read <http://bit.ly/python10>                                                                                                                                                    |
| Waterloo, CodingBat                                                                                                                          | lab 0.1          | Problem sets                                                                                                                                                                                                            |
| 7 constructs, 140 CloudCoder exercises, [Python workshop](/lab3003/manual/pc0.md)                                                            | lab 0.2          | Swap two numbers (variables), test for Leap Year (conditional), cycle through `n` variables, and sum of array of numbers (loops)                                                                                        |
| Algorithmic, Tuples, Modulo Arithmetic, Global Scope (vs) Local Scope, Indefinite looping (`while` keyword), `if-else` statements, Recursion | lab 1            | Compute the GCD of two numbers                                                                                                                                                                                          |
| Algorithmic - same as above                                                                                                                  | lab 2            | Find the square root of a number (Newton’s method)                                                                                                                                                                      |
| Algorithmic                                                                                                                                  | lab 3            | Exponentiation (power of a number)                                                                                                                                                                                      |
| Algorithmic, Searching, Subscripting                                                                                                         | lab 4            | Linear search and Binary search                                                                                                                                                                                         |
| Algorithmic                                                                                                                                  | lab 5            | First n prime numbers                                                                                                                                                                                                   |
| Lists                                                                                                                                        | lab 6            | Find the maximum of a list of numbers                                                                                                                                                                                   |
| Lists, Dictionaries                                                                                                                          | lab 7            | Removing all the duplicate elements in a list                                                                                                                                                                           |
| Looping through Lists, Sorting                                                                                                               | lab 8            | Selection sort, Insertion sort                                                                                                                                                                                          |
| Sorting (divide-and-conquer)                                                                                                                 | lab 9            | Merge sort, Quick sort                                                                                                                                                                                                  |
| Mutable data - List of Lists                                                                                                                 | lab 10           | Multiply matrices                                                                                                                                                                                                       |
| Mutable data - Dictionary, **main()** function, **sys** module, **getopt** function, Basic error handling                                    | lab 11           | Programs that take command line arguments (word count, aka Unix command `wc`)                                                                                                                                           |
| Dictionary, File Handling, Exceptions, Formatted Writing                                                                                     | lab 12           | Find the most frequent words in a text read from a file                                                                                                                                                                 |
| Advanced                                                                                                                                     | Lab Integration  | Solve the CloudCoder problem at <http://cloudcoder.kgkite.ac.in/cloudcoder/#exercise?c=7,p=1229>. Maximum points for the most elegant solution, aka one that is both efficient and one that is also easy to understand. |
| Advanced                                                                                                                                     | Lab Integration2 | Read personal GPS data from file and plot on a map and find the distance from home to KITE                                                                                                                              |

## Platform needed

* Python 3 interpreter for Windows/Linux
* Total: 60 Periods

### COURSE Outcomes

Upon completion of the course, students will be able to

* Write, test, and debug simple Python programs.
* Implement Python programs with conditionals and loops.
* Develop Python programs step-wise by defining functions and calling them.
* Use Python lists, tuples, dictionaries for representing compound data.
* Read and write data from/to files in Python.

## Bonus Lab GTG

For Inspiration review - <https://www.python.org/about/success/>

* Genius Project - choose an open source project of your choice from `github`. If you are mechanical engineer, choose a project that is related to your discipline. Make a serious attempt to understand 100% of the logic of the code.
  * Make changes to the code to improve the efficiency or effectiveness or create meaningful extensions.
  * Pre-register with your faculty to indicate that you want to complete this project with mentoring help
  * If you win the Python Genius Project Competition which will be held in the week of Sept 6, 2017, you will be awarded a prize for the best `GTG Project`, worth upto Rs 10,000
* Think up a creative use of a Python script that you would like to use on your mobile. Create a personal Mobile App using Python to implement it - <https://www.quora.com/Can-I-make-an-Android-app-with-Python>
  * <http://qpython.com/>
