Question: You will design and implement a software system that will generate transcripts for students studying at a university using Object-Oriented Design principles. You will be
You will design and implement a software system that will generate transcripts for students studying at a university using Object-Oriented Design principles.
You will be provided
an example student input file called example_student_01.csv, and
an example curriculum file called curriculum.csv
as part of an archive along with this notebook.
Both data files will be in CSV format, where the delimiter character will be a semicolon (;).
Consider starting from the example program that will has already been posted that reads a CSV file using the Python csv module. See the example program named test-csv-reader.py that will be provided to you as part of this homework's file archive.
If you save all the files in this homework file archive in t
In [4]:
!python test-csv-reader.py curriculum.csv
--- Row 1: ARAB101|Arabic||3 --- Row 2: EU450|Political History of Europe||3 --- Row 3: COM416|Data Communications and Networking||3 --- Row 4: CHEM101|Chemistry||4 --- Row 5: CS131|Introduction to Programming||3 --- Row 6: ENG101|English I||3 --- Row 7: ISE101|ISE Orientation||0 --- Row 8: ISE100|Introduction to ISE||3 --- Row 9: ISE111|Introduction to ISE||3 --- Row 10: MAT101|Calculus I||4 --- Row 11: MAT111|Linear Algebra||3 --- Row 12: MAT112|Linear Algebra||3 --- Row 13: PHY101|Physics I||4 --- Row 14: CS122|Programming and Problem Solving||3 --- Row 15: ENG102|English II|ENG101|3 --- Row 16: MAT102|Calculus II|MAT101|4 --- Row 17: MAT122|Discrete Mathematics||3 --- Row 18: PHY102|Physics II|PHY101|4 --- Row 19: CS221|Data Structures and Algorithms|CS122|3 --- Row 20: ECE222|Digital Circuits and Systems|MAT122|3 --- Row 21: ISE201|Multimedia Systems|CS122, MAT111|3 --- Row 22: MAN201|Introduction to Management||3 --- Row 23: CS222|Database Systems|CS221|3 --- Row 24: CS224|Web Design and Programming|ISE201|3 --- Row 25: CS226|Object Oriented Programming|CS221|3 --- Row 26: ECO202|Introduction to Economics||3 --- Row 27: MAT250|Probability and Statistics|MAT111|3 --- Row 28: MAT201|Differential Equations||3 --- Row 29: CS323|Operating Systems|CS226|3 --- Row 30: CS325|Internet Programming|CS224|3 --- Row 31: CS330|Visual Programming|CS222|3 --- Row 32: ISE301|Geographic Information Systems|CS226|4 --- Row 33: ISE303|Management Information Systems|MAN201|3 --- Row 34: CS322|Web Application Development|CS325|3 --- Row 35: ECE322|Networking and Data Communications|ECE222|3 --- Row 36: ENG302|Technical Report Writing and Presentation|ENG102|3 --- Row 37: ISE302|Accounting Information Systems||3 --- Row 38: SE322|Software Engineering|CS323|4 --- Row 39: ISE202|GUI Programming||3 --- Row 40: ISE399|Summer Practice||0 --- Row 41: ISE300|Summer Practice||0 --- Row 42: ISE401|eGovernment|MAN201|3 --- Row 43: ISE403|Principles of Information Security|ECE322|3 --- Row 44: ISE430|Human Computer Interaction||3 --- Row 45: ISE432|Project Management for IS||3 --- Row 46: ISE491|Senior Project I||4 --- Row 47: ISE402|Information Ethics||3 --- Row 48: SE402|Information Ethics||3 --- Row 49: ISE492|Senior Project II|ISE491|4 --- Row 50: SE420|Software Testing|SE322|4 --- Row 51: FRE101|French I||3 --- Row 52: IE333|Operations Research||3 --- Row 53: COM333|Operations Research||3 --- Row 54: MAT221|Numerical Methods in Engineering||3 --- Row 55: MAT301|Numerical Methods in Engineering||3 --- Row 56: COM463|Digital Image Processing||3 --- Row 57: COM450|Advanced Database Programming||3 --- Row 58: COM451|Introduction to Artificial Intelligence||3 --- Row 59: COM453|Decision Making||3 --- Row 60: CS450|Database Administration||3 --- Row 61: ISE405|eCommerce||3 --- Row 62: CS421|Visual Programming||3 --- Row 63: COM446|Advanced Database Programming||3 --- Row 64: COM432|Programming Languages II||3 --- Row 65: AIT101|Ataturk's Principles and Reforms||0 --- Row 66: GER101|German I||3 --- Row 67: RELECT|Restricted Elective||3 --- Row 68: MELECT|Elective (Mathematics and Basic Sciences)||3 --- Row 69: FELECT|Free Elective||3 --- Row 70: NELECT|Non-Technical Elective||3 --- Row 71: TELECT1|Technical Elective||3 --- Row 72: TELECT2|Technical Elective||3 --- Row 73: TELECT3|Technical Elective||3 --- Row 74: TELECT4|Technical Elective||3 --- Row 75: TELECT5|Technical Elective||3 --- Row 76: TUR100|Turkish for Foreigners||0 --- Row 77: TUR110|Turkish||3 --- Row 78: TUR222|Diksiyon||3 --- Row 79: EE216|Electromagnetic Theory||3 --- Row 80: ISE415|XXXXXXX||3
Your task in the first phase of this homework will be to:
Represent each student using a Python class, such that grades for all courses that student took is available semester by semester.
Represent semesters and grades for each course taken as you see fit for this stage.
Should you be representing semesters and grades using classes? Think.
Represent the curriculum as a class.
Be able to print an instance of a student to the screen using print().
Be able to print an instance of curriculum to the screen using print().
In the second phase of this homework, you will implement the GPA (grade point average) and CGPA (cumulative grade point average) computations for a given student.
The GPA for a given semester is total number of points earned in that semester divided by the total number of credits for that semester.
The CGPA is similar, except that we compute the total number of points and credits for all courses taken, but we also have to count each unique course once. That is, if a course has been taken before, the new points must be updated in the overall total by subtracting the old points and adding the new points. Note that the number of credits for a given course would be unchanged.
In other words, the GPA for a given semester would remain unaffected by retaking a course. However, the computation of the CGPA should only take the last occurrence of a course into account and discard all previous occurrences, no matter the grade of the student.
You will use the following table for grade weights:
| Grade | Weight |
|---|---|
| AA | 4.0 |
| BA | 3.5 |
| BB | 3.0 |
| CB | 2.5 |
| CC | 2.0 |
| DC | 1.5 |
| DD | 1.0 |
| FD | 0.5 |
| FF | 0.0 |
You will use the curriculum definition file provided to you as part of this assignment named curriculum.csv.
You can also use the file example_student_01.csv as an example to test your program. An example output of your program will also provided to you in a file named sample-output.txt.
Of course, you can design your own data structures for storing grade and curriculum data, but, you can also use ready-made libraries that will make your job easier.
I recommend that you give the Python Pandas library a try. Pandas has ready-made APIs for reading CSV files into tables that you can manage at a high level. However, all this is your choice. This project can be completed without having to resort to external high-level libraries as well.
QUESTION 1
After doing object-oriented analysis and design, draw a UML diagram for your design.
Add your design as an image (SVG, PNG, JPG, GIF, etc.) below.
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
