SDES project topics

Please read this page very carefully. This page has info about
  • some practice Python problems. (Please use Python and not Bash)
  • the first course project (individual, 10% weightage).

The practice problems: These are for your programming practice. Please decide on suitable input/output templates and write the Python program w.r.t. your template.

  1. Programme-Allotment problem: Given a csv file of students as:

    Sr.Num,rollnumber,rank,age(in years),choice1, choice2, choice3,..

    with unique rollnumber, write a program that ALLOTS students to choices. The choices come with capacities, and some choices might not achieve full capacity.

    There are no ties. But each programme has capacity and age-limitations programme-name,capacity,min-age,max-age. Data has one row per student, and capacities' file has one row per programme. There are eligibilities based ONLY on age and then there is a rank criteria.

    You must use objects, classes, list-comprehension to make an allotment.

  2. Write a Python program that takes a directory and then for all files in that directory, sub-directories, etc and this program replaces all special characters by underscore (_). The list of special characters is to be written inside the Python program. Use os.path, os.walk, shutil

  3. Write a Python program that takes a list of students to be allotted rooms to a hostel and then randomly allots. Two files are taken: one is list of available rooms, and second is list of students. (Roomnumber is unique. Rollnumber is also unique.) Random number should come from a seed to have reproducibility.

  4. Write a Python program that takes interest-rate, principal and number of years and calculates the EMI. Plot EMI versus number of years (to see that EMI does not decrease much even if number of years increases). Plot total amount to be repaid versus number of years. (Use matplotlib)

  5. Write in Python a program to find all the (rpass) git repositories in the directory given as command line argument, with a default to the current directory. Give full (absolute) paths.

  6. A csv-file is given with 5 fields. rollnumber, CPI, GATE-score, programme-name, programme-was-what-choice-number-during-admissions. Make a scatter plot to reveal trends (whether high GATE score generally means high CPI, etc.) (Rollnumber is not to be shown in the plots. The csv-file contains it.) How performance (CPI) depends on choice-number is to also be shown.

Problems for first-course-project (individual)

There are five types of CREDITING students: depending on the rollnumber's last digit. Please choose the appropriate one. No change is possible under any circumstance.

For each of these, plot two key variables versus time in same figure.

Write a make file. The makefile should create a latex/pdf file. The python code should also create an animation. The project has some flexibility, and do use this and look up relevant material.

Submit:
  • Tests
  • Makefile (that makes test)
  • One ipython notebook
The pdf-file should have:
  • Public git repo, where the source is available
  • version of the program that is required for running the code
  • Date when the pdf-file was generated
  • Author name/rollnumber in the tex file as comment (and also as pdf-file content).
  • At least two references, and coming from bib file. Use bibtex.

The pdf-file should be generated using pdflatex, and the plots should come from Python only. None of the following should be DEFAULT, but should have got explicitly set in Python. Each should have got set from within the Python code:

Block-diagrams are not plots.

The pdf-file's figure's caption should have the rollnumber of the candidate and also in the title. The ipython notebook's animation too should have the rollnumber clearly.

Submission date for 1st course project: 20th October, Thursday.

Please note. The second course project intermediate evaluation too is 20th October. This is almost 4 weeks in advance, please plan from now on only.

Please revisit this page, in case there are changes, etc. (Changes/corrections will be posted on the top.)