COMP102 - Computer Programming
Mini Projects
   Students are required to carry out one mini project for the course COMP 102. Each stu-
dent must work individually in the project. No more than 3 students may work on the
same project.
   To avoid conflicts in project selection, all students are required to choose 3 preferred projects
from the provided list of projects and fill in the following form:
https://forms.gle/nmeVBxZmG1jjogHDA
   If there are projects selected by more than 3 students, projects will be assigned to the stu-
dents based on their preferences.
    At the end of the project, students will have to submit the following:
    1. A short report explaining the project, and, containing screenshots of the output
    2. Source code
    Students will also have to demonstrate their project on the specified date.
1     Important dates
 Project selection deadline      July 2, 2021
 Project submission deadline     Aug 10, 2021
 Project demo                    Aug 13-15, 202
2     Mini projects
    1. Gregorian Calendar
       Write a program to print Gregorian Calendar. Your program must ask the user to input
       the desired year.
    2. Periodic Table
       Write a program to print the Periodic table.
    3. Book Management System
       Develop a system to manage information about books. All information about books must
       be stored in a file. Users must be able to do the following:
       (a) Add a book
       (b) Edit the details of a selected book
        (c) Display the details of all or selected books
       (d) Delete a book
                                                 1
 4. Bus Ticket Reservation System
    Develop a system for reserving bus tickets. The system must keep track of the available
    buses and seats. Users must be able to reserve seats and cancel reservations.
 5. Shop Billing System
    Develop a shop billing system. Your program must read the purchased items, calculate
    VAT, discount, and the total amount to be paid, and display the invoice. The purchase
    history must be saved in a file.
 6. Contact Management System
    Develop a basic contact management system. All contacts must be stored in a file. Users
    must be able to do the following:
     (a) Add a contact
    (b) Remove a contact
     (c) Search a contact
    (d) Edit contact details
     (e) Display all/selected contacts
 7. Tic-tac-toe
    Write a program that enables two players to play the Tic-Tac-Toe game.
 8. ASCII art
    Write a program to display three ASCII arts. Users must be able to select an art to
    display.
 9. Quiz
    Write a program to generate a quiz. The quiz must be time-bound and contain multiple
    choice questions. At the end of the quiz, the obtained score must be displayed. Quiz
    history must be saved in a file for future reference.
10. English typing tutor
    Write a program that can help users practice typing in English. Your program must
    display random texts and let the user type them. Typing speed and accuracy must be
    displayed at the end of the session.
11. Nepali Calendar
    Write a program to print Nepali Calendar. Your program must ask the user to input the
    desired year.
12. Nepali typing tutor
    Write a program that can help users practice typing in Nepali. Your program must display
    random texts and let the user type them. Typing speed and accuracy must be displayed
    at the end of the session.
13. Scientific calculator
    Write a program that lets users perform basic operations in a scientific calculator (e.g.,
    arithmetic operations, trigonometric operations, logarithmic functions, etc.). No GUI is
    needed.
14. Flight Seat Selection System
    Write a program for flight seat selection. Your program must keep track of available
    seats, display the available seats using ASCII characters, and let the users select seats
    interactively.
                                             2
15. Barchart
    Write a program to draw a bar chart using ASCII characters.
16. Sampling
    Write a program that reads a CSV file containing information about users (e.g. age,
    gender, location etc.), then performs simple random sampling (i.e. randomly select a
    subset of users), and saves the sample in a file. Your program must ask the sample size,
    and provide the following two sampling schemes:
     (a) Sampling with replacement
    (b) Sampling without replacement
17. Term Frequency, Document Frequency
    Write a program that reads text files present in the given directory, then counts the
    number of times a term occurs in a document, and the number of documents containing
    a term. Your program must ask the user to enter the directory to scan. The output may
    look like this:
      Term          Term Frequency Document Frequency
      operations 5                    2
      word          6                 1
18. String Distance Calculator
    Write a program that reads two strings from the user and calculates the distance between
    them. Your program must support the following string distance algorithms:
     (a) Hamming distance
    (b) Levenshtein distance
     (c) Cosine distance
19. Imputation
    Write a program that reads a CSV file containing some 2-dimensional data, and checks
    if any data value is missing in the file. If data is missing, your program must perform
    imputation (the process of replacing missing data with substituted values). Your program
    must support the following imputation techniques:
     (a) Imputation using mean
    (b) Imputation using median
     (c) Imputation using mode
20. Data Deduplication
    Write a program that reads a text file or a CSV file, and performs data deduplication
    (eliminating duplicate copies of repeating data). Your program must display the duplicate
    lines or rows, and ask the user whether to perform deduplication.
21. Precision, Recall
    Write a program that reads a CSVfile containing data in the following format, and calcu-
    lates precision, and recall from the given data.
    Expected,Actual
    Y,Y
    N,N
    Y,N
    Y,Y
    N,Y
                                             3
      N,N
      Compute precision and recall using the following formula:
                                                          TP
                                         Precision =
                                                        TP + FP
                                                         TP
                                            Recall =
                                                       TP + FN
      Where
      T P = number of rows where Expected = Y and Actual = Y,
      F P = number of rows where Expected = N and Actual = Y,
      F N = number of rows where Expected = Y and Actual = N,
 22. Linked List
     Write a program that implements linked list data structure. Users must be able to perform
     the following:
       (a) Add a data to a linked list
       (b) Display the contents of a linked list
       (c) Search a data in a linked list
 23. Reading Excel file
     Write a program that reads an excel file (e.g. using LibXL) and calculates various statistics
     of the data stored in that file.
3    Requirements
    • Your program must be interactive and contain the following:
        – Menu
        – Functions
    • Code must be clean and well documented.
    • Your program should contain the following, if appropriate:
        – Command-line arguments
        – Structures
        – Arrays
    • GUI is not needed.
4    Grading policy
Your program will be graded based on the following:
    • Originality/creativity
    • Design/readability
    • Coding style
    • Correctness
    • Requirement satisfaction