Final Project - ITEC Course Schedules
For this lab, and every lab: comment your code. If you use/adapt code from the internet, you must add a comment with the source of the code.
Reading:
You will have to read about and learn to use Beautiful Soup modules, as well as understand HTML. See the textbook Chapter 11 https://automatetheboringstuff.com/chapter11/ and scroll about a third of the way down or search for "Parsing HTML with the BeautifulSoup Module." Do a search ( on Windows or <⌘-F> on a Mac) for "BeautifulSoup" and you'll be there. You'll want to understand the whole HTML section before that too.
Coding:
The Problem: Make a spreadsheet of the ITEC teaching schedule (55 points for code, 45 points for comments)
Write a program that reads the MCTC "Course Search Results" page, parses that page, and creates a spreadsheet containing seven columns of data from the web page.
You can use this URL: https://eservices.minnstate.edu/registration/search/advancedSubmit.html?campusid=305&searchrcid=0305&searchcampusid=305&yrtr=20205&subject=ITEC&courseNumber=&courseId=&openValue=OPEN_PLUS_WAITLIST&delivery=ALL&showAdvanced=&starttime=&endtime=&mntransfer=&credittype=ALL&credits=&instructor=&keyword=&begindate=&site=&resultNumber=250
The seven columns I want in the spreadsheet are:
ID # (ie. 000096)
The course number, a dash, and the section number (ie. 1150-61)
The course title (ie. Programming Logic and Design)
The day of the week the course meets (ie. Wednesday)
The time the course meets (ie. 9:00am - 11:59am)
The credits for the course (ie. 3)
The instructor for the course (ie. Huilman, Brian)
The formats I use in the examples above are how I want them in the spreadsheet.
Extra credit +5 points:
Look at the URL and notice the yrtr=20205 parameter that's being passed to the server. This URL is a form of an API. Minneapolis College starts the academic year in the Summer semester with the "1" designator, the Fall semester has a "3" designator, and the Spring term uses a "5" designator. Modify your code to look at the current date, and ask the user if they want the current semester (and say which semester it is from "Fall," "Spring," or "Summer"), or the next semester. You will then need to properly build the URL, specifically the yrtr= variable. For example, to get the schedule for this Fall semester, you would use 20203 (the first semester of the 2019-2020 school year).
Extra credit +10 points:
Add an 8th column to the spreadsheet that includes the room number the course is taught in. This will require quite a bit of extra work since that data is "hidden" as a pop-up on the page. For the course I use as an example above, your output for the 8th column (column H) would be T.3010.
Notes:
Your code should have clear messages sent to the user, with full sentences and proper English grammar. You should verify and validate all input() you get from the user. When I run your code to test it (for grading) I will purposefully type in data that your program is likely not expecting, trying to get it to crash. Use try: except: blocks around areas of your code that might fail. Basically, us all of the best coding practices we have talked about throughout the course and make your code as complete as possible.
When I grade your work, I'll be looking at code quality, so make sure your code is neat, that you use descriptive variable names, you've commented your code (focusing on the more complex parts of the code) and that your logic is organized and easy to read and follow the flow. If you'd like me to review your work before I grade it, please email me or ask in class or office hours.
To submit:
In the "Comment" field when you're submitting your files, I want you to include the URL to your GitHub repository where your code is. You will lose a letter grade if you don't have your code in GitHub! Upload your .py file to the Final Project assignment dropbox.
DescriptionIn this final assignment, the students will demonstrate their ability to apply two ma
Path finding involves finding a path from A to B. Typically we want the path to have certain properties,such as being the shortest or to avoid going t
Develop a program to emulate a purchase transaction at a retail store. Thisprogram will have two classes, a LineItem class and a Transaction class. Th
1 Project 1 Introduction - the SeaPort Project series For this set of projects for the course, we wish to simulate some of the aspects of a number of
1 Project 2 Introduction - the SeaPort Project series For this set of projects for the course, we wish to simulate some of the aspects of a number of