Mini-Project Notice for 3rd Semester Students

All the third semester students are hereby informed that they have to do a mini-project in this semester. There are 50 marks (in lieu of Seminar) for this mini-project. The topics are given below from which one topic is to be chosen. The other rules/regulations and FAQs are given below the topics list.

Sl No

Topic

1

A famous linguist named George Kingsley Zipf gave a law which relates to the frequency of occurrence of English words and is known as Zipf's law. This law says that he frequency of any word is inversely proportional to its rank in the frequency table. Thus the most frequent word will occur approximately twice as often as the second most frequent word, three times as often as the third most frequent word, etc. (Use any resource to learn about Zipf's law).
Now write a program in C to do the following:
i) Read some text from a file(it should be a big file, you can download some of the free ebooks from internet). Break the read file into words.
ii) Now count the number of occurrences of each word you have read.
iii) Rank the words in order of their frequency.

Also do the following, there is no programming involved in this part:
Plot word frequency versus word rank(you can use excel here) and compare the results with Zipf's law.

2

Cryptography is a technique used to encode and decode documents. All modern web browsers have built in cryptographic schemes to allow safe transmission of data over the internet of sensitive details such as your passwords.
One of the oldest cryptographic system is known by the name Caesar shift cipher.  Here A is replaced by B, B is replaced by C,...Z is replaced by A and so on. This is a good starting point for learning cryptography.
Another very popular cryptographic technique is known as RSA. It used basic number theory and mathematics which you have already studied in first year and currently studying. Find any resources on the internet or approach any faculty member to learn the RSA technique, it is simple to understand.

Now write a C program to do the following:
i) Ask user a choice of simple cryptography or difficult cryptography. Read a file document where the technique is to be used (The document will contain simple English text).
ii) If choice is simple, simply implement the Caesar shift cipher on the contents of the document
iii) If choice is difficult implement the RSA using a very small key length

3

A popular topic in astronomy is '3-body Gravitational Problem.' It determines the motion of three bodies (say the Sun, Moon and Earth) in accordance with Newton's law of motion and Universal Gravitation.
Your task is to simulate a planetary system with atleast these three bodies (The Sun, Moon and Earth- you can always take more bodies if you want) in your computer screen (in simple 2-D). A very simple method can be as follows (you can always improve on it):

1) Select a small time gap
2) For all the three bodies specify their mass, velocity and the starting (initial) position.
3) Move the three bodies by an small amount depending on its velocity and the time gap chosen in Step 1.
4) Change the velocity of the three bodies by a small amount according to its acceleration and the time gap chosen in step 1.
5) Go back to Step 3.
(The above algorithm is indicative only, you can have your own steps as long as the main task is fulfilled)
You now print the positions of all the 3 bodies(Sun, Moon, Earth) in every time step. We can have a graphical display of how the system might evolve.Possible study help: Euler method of numerical integration can be helpful in this topic

4 Write a C program for the following: Create an open field with randomly distributed grass on it and then place a wolf and a lamb randomly on it. Your output should display this open field as a matrix made of simple characters. Show the free space with nothing or a '0', show grass with the character ‘*’, show lamb with the character ‘L’, and show the wolf with the character ‘W’. On pressing of <Enter> the current display moves to the next level. On each subsequent level both the wolf and lamb can only move one step in any direction. If the lamb arrives at position where grass initially existed, the grass is eaten and it is deleted (* is then relaced by nothing or '0'). Your program should stop if the wolf catches the lamb or the lamb can not eat grass for 10 consecutive levels.

 FAQs

Q. What is a mini-project?

A. You must have done some projects at school. It is just like that, it is a project which involves programming.

Q. What is mini then?

A. It is a program small in size in terms of number of lines of programming. Later in higher semesters you have to do major projects where you have to write thousands of line of code.

Q. What is the difference between a lab-program and a mini-project.

A. Lab program normally targets a small and specific task. Mini-project involves a much bigger task. Also, though the outcome is specific, you use your own creativity to design the output scenario. And you have to check for inputs which might produce errors and eliminate those possibilities.

Q. So what do I do?

A. First decide whether you want to go alone or want to do it in groups, the choice is yours. If you decide to do in groups the maximum size of a  group can be 4 students. Then choose any one of the four topics for implementation.

Q. Can we have one more extra member please?

A. No

Q. Can we form groups across different sections (2 students from A section, 1 from C......)?

A. Yes

Q. Can we form groups across different departments (2 from CS, 2 from IT)?

A. Yes

Q. So we have selected the groups (or decided to do alone), selected the topic. What next?

A. Plan your code. Write your code. Execute and test your code. Submit.

Q. What we need to submit?

A. Your code (only the code text, no executable files) and a small readme file.

Q. When to submit and how to submit?

A. The last date is December 01, Monday. It is a strict deadline, no late submissions are accepted. How to submit will be announced in due time.

Q. Is it necessary that we use only C language? We know Java, C++......

A. It is imperative that you use C language for this project.

Q. What compiler should I use?

A. Use any modern compiler or IDE. You can use GCC, Codeblocks, Anjuta (even the big IT companies use them). Avoid using TurboC/BorlandC.

Q. Can I take help from faculty members?

A. Infact you should. But donot ask them to write codes for you.

Q. Can we copy from one another? Or copy from the internet?

A. Good question. Last year 10% of your seniors across all semesters got a direct zero and faced other disciplinary actions for copying. Copying is viewed very seriously.

Q. What is the meaning of copying?

A. Mr LMN & group picks things from the web, select, CTRL-C, CTRL-V. (ii) Miss OPQ does CTRL-C, CTRL-V from Mr LMN & group, (iii)  Miss RST does a work on her own and gives everything to Mr UVW.  (iv) Mr XYZ takes the code from Mr ABC, changes a few variable and function names, reshuffles the code and submit. All these are some examples of copying. If two groups copy among each other both the groups will be penalized.

Q. So when do we start?

A. Now.