diff --git a/data/-- SQLite.sql b/data/-- SQLite.sql
index 8ce0c24f..51e71cf7 100644
--- a/data/-- SQLite.sql
+++ b/data/-- SQLite.sql
@@ -1,4 +1,4 @@
--- CREATE TABLE CE_CLASSES AS
-SELECT a.*
-FROM allgrades AS a
-WHERE subject_id='CE' AND (course_number BETWEEN 1000 AND 5000) AND (year=2023 or year=2024) AND (section_number LIKE '0_1' or (course_number='4310' or course_number='4320')));
+-- Remove the SC from each Column
+SELECT * FROM ClassesForCE
+-- Add Univ En and ENGR to CE data base
+--
\ No newline at end of file
diff --git a/data/CE Degree Plan CSV.csv b/data/CE Degree Plan CSV.csv
deleted file mode 100644
index d39d32f4..00000000
--- a/data/CE Degree Plan CSV.csv
+++ /dev/null
@@ -1,82 +0,0 @@
-Formal Name,Course Name,Prerequisites,Corequisites
-CE 1105,Introduction to Civil Engineering,[None],[None]
-CHEM 1465,Chemistry for Engineers,[None],['MATH 1421']
-ENGL 1301,Rhetoric and Composition I,[None],[None]
-CE 1252,Computer Tools,[None],['MATH 1402']
-UNIV-EN 1131,Student Success, [None],[None]
-ENGR 1101, Entrance to Engineering for Transfer Students,[None],[None]
-MATH 1426,Calculus I,[None],[None]
-IE 2308,Engineering Economy,[None],['MATH 1426']
-MATH 2425,Calculus II,['MATH 1426'],[None]
-PHYS 1443,General Technical Physics I,['MATH 1426'],[None]
-POLS 2311,Government of the US,[None],[None]
-HIST 13XX,U.S. History Elective,[None],[None]
-CE 2311,Statics,['PHYS 1443'],[None]
-CE 2153,Computer Tools-Civil 3D,['CE 1252'],[None]
-COMS 2302,Professional & Technical Communication for Scientists & Engineers,"['30 Semester Credit hours', 'ENGL 1301']",[None]
-MATH 2326,Calculus III,['MATH 2425'],[None]
-PHYS 1444,General Technical Physics II,['PHYS 1443'],['MATH 2425']
-HIST 13XX,U.S. History Elective,[None],[None]
-CE 2221,Dynamics,"['CE 2311', 'MATH 2425']",[None]
-CE 2313,Mechanics of Materials,"['CE 2311', 'MATH 2425']",[None]
-CE 2331,Engineering Measurement & Computer Modeling,['CE 2153'],[None]
-MATH 3319,Differential Equations & Linear Algebra,[None],['MATH 2326']
-CE 3301,Stochastic Models,['MATH 2425'],[None]
-GEOL 3340,Geology for Engineers,"['CHEM 1465', 'PHYS 1443']",[None]
-CE 3210,CE Communications,['COMS 2302'],[None]
-CE 3253,Applications of Computer-Based Design Programs in CE,"['CE 2153', 'CE 2331']",[None]
-CE 3305,Basic Fluid Mechanics,['CE 2311'],"['MATH 3319', 'CE 3142']"
-CE 3142,Applied Fluid Mechanics Lab,[None],['CE 3305']
-CE 3341,Structural Analysis,['CE 2313'],[None]
-CE 3343,Soil Mechanics,['CE 2313'],['CE 3143']
-CE 3143,Properties & Behavior of Soils,[None],['CE 3343']
-POLS 2312,State and Local Government,[None],[None]
-CE 3302,Transportation Engineering,"['CE 2331', 'CE 3301']",[None]
-CE 3361,Properties & Behavior of CE Materials,['CE 3143'],[None]
-CE 3311,Construction Engineering,['IE 2308'],[None]
-CE 3342,Introduction to Water Resources,"['CE 3301', 'CE 3305']",[None]
-CE 3334,Principles of Environmental Engineering,"['CHEM 1465', 'CE 3305']",['CE 3131']
-CE 3131,Environmental Analysis,[None],['CE 3334']
-CE 4347,Reinforced Concrete Design,['CE 3341'],[None]
-CE 4328,Water System Design,['CE 3342'],[None]
-CE 4352,Professional Practice,['CE 3311'],[None]
-CE 4383,Senior Project,"['CE 4352', 'CE4328 or CE4347', 'All CE 3000 level courses']",[None]
-CE 43XX ,Senior Technical Elective (1),[None],[None]
-CE 43XX ,Senior Technical Elective (2),[None],[None]
-CE 43XX ,Senior Technical Elective (3),[None],[None]
-CE 43XX ,Senior Technical Elective (4),[None],[None]
-LPC XXXX,"Language, Philosophy, and Culture Elective",[None],[None]
-CA XXXX,Creative Arts,[None],[None]
-CE 4305,Trenchless Technology Methods,['CE 3311'],[None]
-CE 4306,Infrastructure Asset Management,['CE 3311'],[None]
-CE 4332,"Construction Equipment, Methods, & Management",['CE 3311'],[None]
-CE 4350,Introduction to Air Pollution,['CE 3334'],[None]
-CE 4351,Physical Unit Processes,"['CE 3131', 'CE 3334']",[None]
-CE 4353,Water Chemistry,"['CE 3334', 'CE 3131']",[None]
-CE 4354,Introduction to Solid Waste Engineering,['CE 3334'],[None]
-CE 4355,Design of Water and Wastewater Treatment Facilities,"['CE 3334', 'CE 3142']",[None]
-CE 4320,Earth Structures Design,['CE 3343'],[None]
-CE 4321,Foundation Engineering,"['CE 3341', 'CE 3343']",[None]
-CE 4322,Applications with Geosynthetics,['CE 3343'],[None]
-CE 4323,Landfill Design,['CE 3343'],[None]
-CE 4336,Hot Mix Asphalt Design & Construction,['CE 3361'],[None]
-CE 4337,Portland Cement Concrete Pavements,['CE 3361'],[None]
-CE 4324,Mechanics of Materials II,['CE 2313'],[None]
-CE 4325,Fundamentals of Finite Element Method,['CE 3341'],[None]
-CE 4348,Structural Design in Steel,['CE 3341'],[None]
-CE 4356,Advanced Steel Design,['CE 4348'],[None]
-CE 4360,Design of Structural Masonry,['CE 3341'],[None]
-CE 4361,Advanced Reinforced Concrete Design,['CE 4347'],[None]
-CE 4363,Fundamentals of Prestressed Concrete,['CE 4347'],[None]
-CE 4365,Structural Wood Design,['CE 3341'],[None]
-CE 4366,Fundamentals of Fiber Reinforced Composites,['CE 3341'],[None]
-CE 4368,Advanced Structural Analysis,['CE 3341'],[None]
-CE 4369,Loads on Structures,['CE 3341'],[None]
-CE 4310,System Evaluation in Civil Engineering,"['IE 2308', 'CE 3301']",[None]
-CE 4311,Urban Transportation Infrastructure Planning,['CE 3302'],[None]
-CE 4312,Street and Highway Design,['CE 3302'],[None]
-CE 4313,Traffic Engineering,['CE 3302'],[None]
-CE 4314,Introduction to Railroad Engineering,['CE 3302'],[None]
-CE 4326,GIS/Hydrologic and Hydraulic Modeling,['CE 3342'],[None]
-CE 4330,Hydraulic Design,['CE 3342'],[None]
-CE 4358,Open Conduit System,['CE 3342'],[None]
\ No newline at end of file
diff --git a/data/civil_engineering_courses.csv b/data/civil_engineering_courses.csv
new file mode 100644
index 00000000..b7619381
--- /dev/null
+++ b/data/civil_engineering_courses.csv
@@ -0,0 +1,47 @@
+Course Name,Formal Name
+CE 1105,Introduction to Civil Engineering
+CHEM 1465,Chemistry for Engineers
+ENGL 1301,Rhetoric and Composition I
+CE 1252,Computer Tools-AutoCAD
+UNIV-EN 1131,Entrance to Engineering
+
+MATH 1426,Calculus I
+IE 2308,Engineering Economy
+MATH 2425,Calculus II
+PHYS 1443,General Technical Physics I
+POLS 2311,Government of the United States
+
+CE 2311,Statics
+CE 2153,Computer Tools - CIVL 3D
+COMS 2302,Professional & Technical Communications for Scientists & Engineers
+MATH 2326,Calculus III
+PHYS 1444,General Technical Physics II
+
+CE 2221,Dynamics
+CE 2313,Mechanics of Materials
+CE 2331,Engineering Measurement & Computer Modeling
+GEOL 3340,Geology for Engineers
+CE 3301,Stochastic Models for CE
+MATH 3319,Differential Equations & Linear Algebra
+
+CE 3210,CE Communications
+CE 3253,Applications of Computer-Based Design Programs in CE
+CE 3305,Basic Fluid Mechanics
+CE 3142,Applied Fluid Mechanics Lab
+CE 3341,Structural Analysis
+CE 3343,Soil Mechanics
+CE 3143,Properties & Behavior of Soils
+POLS 2312,State and Local Government
+
+CE 3302,Transportation Engineering
+CE 3361,Property & Behavior of CE Materials
+CE 3311,Construction Engineering
+CE 3342,Introduction to Water Resources
+CE 3334,Principles of Environmental Engineering
+CE 3131,Environmental Analysis
+
+CE 4347,Reinforced Concrete Design
+CE 4328,Water Systems Design
+CE 4352,Professional Practice
+
+CE 4383,Senior Project
diff --git a/data/classes.db b/data/classes.db
index a20eb28d..b5218bbf 100644
Binary files a/data/classes.db and b/data/classes.db differ
diff --git a/data/computer_science_courses.csv b/data/computer_science_courses.csv
new file mode 100644
index 00000000..ddd039b4
--- /dev/null
+++ b/data/computer_science_courses.csv
@@ -0,0 +1,39 @@
+Course Name,Formal Name
+CSE 1310,Intro to Programming
+ENGR 1101,Intro to Engineering
+UNIV-EN 1131,Student Success
+MATH 1426,Calculus 1
+ENGL 1301,Rhetoric & Composition
+CSE 1106,Intro to CSE
+CSE 1320,Intermediate Programming
+MATH 2425,Calculus 2
+PHYS 1443,General Technical Physics 1
+CSE 2315,Discrete Structures
+CSE 1325,Object-Oriented Programming
+CSE 2312,Computer Organization
+CSE 3318,Algorithms and Data Structures
+PHYS 1444,General Technical Physics 2
+CSE 3380,Linear Algebra for CSE
+CSE 3310,Intro to Software
+CSE 3320,Operating Systems
+MATH 2326,Calculus III
+COMS 2302,Prof. & Technical Comm
+CSE 3302,Programming Languages
+CSE 3330,Databases
+CSE 3315,Theoretical CS
+IE 3301,Probability and Statistics
+POLS 2311,Govt of the United States
+CSE 4308,Artificial Intelligence
+CSE 4344,Computer Networks
+POLS 2312,State & Local Government
+CSE 3314,Professional Practices
+CSE 4316,Senior Design I
+CSE 4303,Computer Graphics
+CSE 4305,Compliers
+CSE 4360,Robotics
+ECON 2305,Principles of Macroeconomics
+IE 2308,Economics for Engineers
+CSE 4317,Senior Design 2
+CSE 4380,Info Security
+CSE 4381,Info Security 2
+CSE 4382,Secure Programming
diff --git a/server/app/scripts/algo.ipynb b/server/app/scripts/algo.ipynb
new file mode 100644
index 00000000..fccb9600
--- /dev/null
+++ b/server/app/scripts/algo.ipynb
@@ -0,0 +1,2989 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "id": "3b1a67a1",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import pandas as pd\n",
+ "import sqlite3\n",
+ "import parse_transcript as ps\n",
+ "import numpy as np"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "id": "9bf11ed1",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Reading 5 pages from '/Users/johna/Downloads/SSR_TSRPT_UN (20) (1).pdf'...\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Course Num | \n",
+ " Finished | \n",
+ " Course Name | \n",
+ " Pre_Requisites | \n",
+ " Co_Requisites | \n",
+ " Description | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 53 | \n",
+ " CE 4308 | \n",
+ " 0 | \n",
+ " TEMPORARY STRUCTURES. 3 Hours. | \n",
+ " CE 3343, CE 3341 | \n",
+ " | \n",
+ " Analysis and design of temporary structures. T... | \n",
+ "
\n",
+ " \n",
+ " | 54 | \n",
+ " CE 4309 | \n",
+ " 0 | \n",
+ " ADVANCED MATERIALS MECHANICAL TESTING AND CHAR... | \n",
+ " CE 3361 | \n",
+ " | \n",
+ " Providing comprehensive understanding of the m... | \n",
+ "
\n",
+ " \n",
+ " | 55 | \n",
+ " CE 4310 | \n",
+ " 0 | \n",
+ " SYSTEM EVALUATION IN CIVIL ENGINEERING. 3 Hours. | \n",
+ " IE 2308, CE 3301 | \n",
+ " | \n",
+ " Techniques necessary to perform economic and m... | \n",
+ "
\n",
+ " \n",
+ " | 56 | \n",
+ " CE 4311 | \n",
+ " 0 | \n",
+ " URBAN TRANSPORTATION INFRASTRUCTURE PLANNING. ... | \n",
+ " CE 3302 | \n",
+ " | \n",
+ " Urban transportation system design, planning, ... | \n",
+ "
\n",
+ " \n",
+ " | 57 | \n",
+ " CE 4312 | \n",
+ " 0 | \n",
+ " STREET AND HIGHWAY DESIGN. 3 Hours. | \n",
+ " CE 3302 | \n",
+ " | \n",
+ " The geometric design concepts for urban and ru... | \n",
+ "
\n",
+ " \n",
+ " | 58 | \n",
+ " CE 4313 | \n",
+ " 0 | \n",
+ " TRAFFIC ENGINEERING. 3 Hours. | \n",
+ " CE 3302 | \n",
+ " | \n",
+ " Design and control of fixed-time, actuated, an... | \n",
+ "
\n",
+ " \n",
+ " | 59 | \n",
+ " CE 4314 | \n",
+ " 0 | \n",
+ " INTRODUCTION TO RAILROAD ENGINEERING. 3 Hours. | \n",
+ " CE 3302 | \n",
+ " | \n",
+ " Overview of the railroad industry in the Unite... | \n",
+ "
\n",
+ " \n",
+ " | 60 | \n",
+ " CE 4318 | \n",
+ " 0 | \n",
+ " MACHINE LEARNING IN CIVIL ENGINEERING. 3 Hours. | \n",
+ " CE 3301 | \n",
+ " | \n",
+ " Machine learning is transforming the way we ap... | \n",
+ "
\n",
+ " \n",
+ " | 61 | \n",
+ " CE 4319 | \n",
+ " 0 | \n",
+ " CIVIL ENGINEERING INFORMATICS. 3 Hours. | \n",
+ " CE 3301 | \n",
+ " | \n",
+ " The course introduces students to computer too... | \n",
+ "
\n",
+ " \n",
+ " | 62 | \n",
+ " CE 4320 | \n",
+ " 0 | \n",
+ " EARTH STRUCTURES DESIGN. 3 Hours. | \n",
+ " CE 3343 | \n",
+ " | \n",
+ " Study of the states of stress and analysis/des... | \n",
+ "
\n",
+ " \n",
+ " | 63 | \n",
+ " CE 4321 | \n",
+ " 0 | \n",
+ " FOUNDATION ENGINEERING. 3 Hours. | \n",
+ " CE 3343, CE 3341 | \n",
+ " | \n",
+ " Aspects of design and construction considerati... | \n",
+ "
\n",
+ " \n",
+ " | 64 | \n",
+ " CE 4322 | \n",
+ " 0 | \n",
+ " APPLICATIONS WITH GEOSYNTHETICS. 3 Hours. | \n",
+ " CE 3343 | \n",
+ " | \n",
+ " Definitions and properties of geotextiles, geo... | \n",
+ "
\n",
+ " \n",
+ " | 65 | \n",
+ " CE 4323 | \n",
+ " 0 | \n",
+ " LANDFILL DESIGN. 3 Hours. | \n",
+ " CE 3343 | \n",
+ " | \n",
+ " Introduction and types of landfills, landfill ... | \n",
+ "
\n",
+ " \n",
+ " | 66 | \n",
+ " CE 4324 | \n",
+ " 0 | \n",
+ " MECHANICS OF MATERIALS II. 3 Hours. | \n",
+ " CE 2313 | \n",
+ " | \n",
+ " Theories of stress and deformation, stress-str... | \n",
+ "
\n",
+ " \n",
+ " | 67 | \n",
+ " CE 4325 | \n",
+ " 0 | \n",
+ " FUNDAMENTALS OF FINITE ELEMENT METHOD. 3 Hours. | \n",
+ " CE 3341 | \n",
+ " | \n",
+ " Stiffness method using basic equations and vir... | \n",
+ "
\n",
+ " \n",
+ " | 68 | \n",
+ " CE 4326 | \n",
+ " 0 | \n",
+ " GIS/HYDROLOGIC AND HYDRAULIC MODELING. 3 Hours. | \n",
+ " CE 3342 | \n",
+ " | \n",
+ " Use of Geographic Information Systems (GIS) an... | \n",
+ "
\n",
+ " \n",
+ " | 69 | \n",
+ " CE 4327 | \n",
+ " 0 | \n",
+ " SITE REMEDIATION ENGINEERING. 3 Hours. | \n",
+ " CE 3334 | \n",
+ " | \n",
+ " This course provides practical understanding o... | \n",
+ "
\n",
+ " \n",
+ " | 70 | \n",
+ " CE 4328 | \n",
+ " 0 | \n",
+ " WATER SYSTEM DESIGN. 3 Hours. | \n",
+ " CE 3342 | \n",
+ " | \n",
+ " Hydraulic/hydrologic analysis and design of mu... | \n",
+ "
\n",
+ " \n",
+ " | 71 | \n",
+ " CE 4330 | \n",
+ " 0 | \n",
+ " HYDRAULIC DESIGN. 3 Hours. | \n",
+ " CE 3342 | \n",
+ " | \n",
+ " Design methods for appurtenances of water conv... | \n",
+ "
\n",
+ " \n",
+ " | 72 | \n",
+ " CE 4332 | \n",
+ " 0 | \n",
+ " CONSTRUCTION EQUIPMENT, METHODS, & MANAGEMENT.... | \n",
+ " CE 3311 | \n",
+ " | \n",
+ " Introduction to the construction industry and ... | \n",
+ "
\n",
+ " \n",
+ " | 73 | \n",
+ " CE 4334 | \n",
+ " 0 | \n",
+ " DRONES & ADVANCED CONSTRUCTION TECHNOLOGY. 3 ... | \n",
+ " CE 3311, CE 2331 | \n",
+ " | \n",
+ " A practical course for technologies and their ... | \n",
+ "
\n",
+ " \n",
+ " | 74 | \n",
+ " CE 4335 | \n",
+ " 0 | \n",
+ " GEOTECHNICAL ASPECTS OF CONSTRUCTION. 3 Hours. | \n",
+ " CE 3343 | \n",
+ " | \n",
+ " Review of engineering geology and soil mechani... | \n",
+ "
\n",
+ " \n",
+ " | 75 | \n",
+ " CE 4336 | \n",
+ " 0 | \n",
+ " HOT MIX ASPHALT DESIGN & CONSTRUCTION. 3 Hours. | \n",
+ " CE 3361 | \n",
+ " | \n",
+ " An in-depth study of the properties of constit... | \n",
+ "
\n",
+ " \n",
+ " | 76 | \n",
+ " CE 4337 | \n",
+ " 0 | \n",
+ " PORTLAND CEMENT CONCRETE PAVEMENTS. 3 Hours. | \n",
+ " CE 3361 | \n",
+ " | \n",
+ " Portland cement concrete mix design and produc... | \n",
+ "
\n",
+ " \n",
+ " | 77 | \n",
+ " CE 4347 | \n",
+ " 0 | \n",
+ " REINFORCED CONCRETE DESIGN. 3 Hours. | \n",
+ " CE 3341 | \n",
+ " | \n",
+ " An analysis, design and synthesis course for c... | \n",
+ "
\n",
+ " \n",
+ " | 78 | \n",
+ " CE 4348 | \n",
+ " 0 | \n",
+ " STRUCTURAL DESIGN IN STEEL. 3 Hours. | \n",
+ " CE 3341 | \n",
+ " | \n",
+ " A design synthesis course for structural steel... | \n",
+ "
\n",
+ " \n",
+ " | 79 | \n",
+ " CE 4350 | \n",
+ " 0 | \n",
+ " INTRODUCTION TO AIR POLLUTION. 3 Hours. | \n",
+ " CE 3334 | \n",
+ " | \n",
+ " An introduction to the air pollution field, in... | \n",
+ "
\n",
+ " \n",
+ " | 80 | \n",
+ " CE 4351 | \n",
+ " 0 | \n",
+ " PHYSICAL UNIT PROCESSES. 3 Hours. | \n",
+ " CE 3334, CE 3131 | \n",
+ " | \n",
+ " Principles of unit process modeling using reac... | \n",
+ "
\n",
+ " \n",
+ " | 81 | \n",
+ " CE 4352 | \n",
+ " 0 | \n",
+ " PROFESSIONAL PRACTICE. 3 Hours. | \n",
+ " CE 3311, CE 3210 | \n",
+ " | \n",
+ " Professional practice issues in the private an... | \n",
+ "
\n",
+ " \n",
+ " | 82 | \n",
+ " CE 4353 | \n",
+ " 0 | \n",
+ " WATER CHEMISTRY. 3 Hours. | \n",
+ " CE 3131, CE 3334 | \n",
+ " | \n",
+ " Principles of water chemistry applied to the t... | \n",
+ "
\n",
+ " \n",
+ " | 83 | \n",
+ " CE 4354 | \n",
+ " 0 | \n",
+ " INTRODUCTION TO SOLID WASTE ENGINEERING. 3 Ho... | \n",
+ " CE 3334 | \n",
+ " | \n",
+ " This course provides an overview of the variou... | \n",
+ "
\n",
+ " \n",
+ " | 84 | \n",
+ " CE 4355 | \n",
+ " 0 | \n",
+ " DESIGN OF WATER AND WASTEWATER TREATMENT FACIL... | \n",
+ " CE 3334, CE 3142 | \n",
+ " | \n",
+ " Design of facilities commonly used in water an... | \n",
+ "
\n",
+ " \n",
+ " | 85 | \n",
+ " CE 4356 | \n",
+ " 0 | \n",
+ " ADVANCED STEEL DESIGN. 3 Hours. | \n",
+ " CE 4348 | \n",
+ " | \n",
+ " Covers torsional design of beams, beams with w... | \n",
+ "
\n",
+ " \n",
+ " | 86 | \n",
+ " CE 4357 | \n",
+ " 0 | \n",
+ " INTRODUCTION TO BIOLOGICAL WASTEWATER TREATMEN... | \n",
+ " CE 3131, CE 3334 | \n",
+ " | \n",
+ " Basic understanding of biological processes us... | \n",
+ "
\n",
+ " \n",
+ " | 87 | \n",
+ " CE 4358 | \n",
+ " 0 | \n",
+ " OPEN CONDUIT SYSTEM. 3 Hours. | \n",
+ " CE 3342 | \n",
+ " | \n",
+ " Non-pressure conduit and channel flow, surface... | \n",
+ "
\n",
+ " \n",
+ " | 88 | \n",
+ " CE 4360 | \n",
+ " 0 | \n",
+ " DESIGN OF STRUCTURAL MASONRY. 3 Hours. | \n",
+ " CE 3341 | \n",
+ " | \n",
+ " Covers masonry unit types and mortar types, re... | \n",
+ "
\n",
+ " \n",
+ " | 89 | \n",
+ " CE 4361 | \n",
+ " 0 | \n",
+ " ADVANCED REINFORCED CONCRETE DESIGN. 3 Hours. | \n",
+ " CE 4347 | \n",
+ " | \n",
+ " Advanced topics on structural design of concre... | \n",
+ "
\n",
+ " \n",
+ " | 90 | \n",
+ " CE 4363 | \n",
+ " 0 | \n",
+ " FUNDAMENTALS OF PRESTRESSED CONCRETE. 3 Hours. | \n",
+ " CE 4347 | \n",
+ " | \n",
+ " Introduction to pre-tensioned concrete structu... | \n",
+ "
\n",
+ " \n",
+ " | 91 | \n",
+ " CE 4365 | \n",
+ " 0 | \n",
+ " STRUCTURAL WOOD DESIGN. 3 Hours. | \n",
+ " CE 3341 | \n",
+ " | \n",
+ " Covers material grade and properties of wood, ... | \n",
+ "
\n",
+ " \n",
+ " | 92 | \n",
+ " CE 4366 | \n",
+ " 0 | \n",
+ " FUNDAMENTALS OF FIBER REINFORCED COMPOSITES. ... | \n",
+ " CE 3341 | \n",
+ " | \n",
+ " Introduction to basic analysis, design and man... | \n",
+ "
\n",
+ " \n",
+ " | 93 | \n",
+ " CE 4368 | \n",
+ " 0 | \n",
+ " ADVANCED STRUCTURAL ANALYSIS. 3 Hours. | \n",
+ " CE 3341 | \n",
+ " | \n",
+ " Advanced analysis of indeterminate beams, fram... | \n",
+ "
\n",
+ " \n",
+ " | 94 | \n",
+ " CE 4369 | \n",
+ " 0 | \n",
+ " LOADS ON STRUCTURES. 3 Hours. | \n",
+ " CE 3341 | \n",
+ " | \n",
+ " Structural analysis of structures under gravit... | \n",
+ "
\n",
+ " \n",
+ " | 95 | \n",
+ " CE 4383 | \n",
+ " 0 | \n",
+ " SENIOR PROJECT. 3 Hours. | \n",
+ " CE 4352, CE 4328|CE 4347 | \n",
+ " | \n",
+ " Planning, analysis of alternatives, and design... | \n",
+ "
\n",
+ " \n",
+ " | 96 | \n",
+ " CE 4391 | \n",
+ " 0 | \n",
+ " PROBLEMS IN CIVIL ENGINEERING. 3 Hours. | \n",
+ " | \n",
+ " | \n",
+ " Selected problems in civil engineering on an i... | \n",
+ "
\n",
+ " \n",
+ " | 97 | \n",
+ " CE 4393 | \n",
+ " 0 | \n",
+ " INDUSTRIAL INTERNSHIP. 3 Hours. | \n",
+ " CE 3342, CE 3341 | \n",
+ " | \n",
+ " Student to experience industrial internship un... | \n",
+ "
\n",
+ " \n",
+ " | 98 | \n",
+ " CE 4394 | \n",
+ " 0 | \n",
+ " RESEARCH INTERNSHIP. 3 Hours. | \n",
+ " CE 3342, CE 3341 | \n",
+ " | \n",
+ " Student to experience research internship unde... | \n",
+ "
\n",
+ " \n",
+ " | 99 | \n",
+ " IE 2308 | \n",
+ " 0 | \n",
+ " ECONOMICS FOR ENGINEERS. 3 Hours. | \n",
+ " | \n",
+ " MATH 1426 | \n",
+ " Methods used for determining the comparative f... | \n",
+ "
\n",
+ " \n",
+ " | 100 | \n",
+ " MATH 1426 | \n",
+ " 0 | \n",
+ " CALCULUS I. 4 Hours. | \n",
+ " | \n",
+ " | \n",
+ " Concepts of limit, continuity, differentiation... | \n",
+ "
\n",
+ " \n",
+ " | 101 | \n",
+ " ECON 2305 | \n",
+ " 0 | \n",
+ " PRINCIPLES OF MACROECONOMICS. 3 Hours. | \n",
+ " | \n",
+ " | \n",
+ " (ECON 2301). Elementary models of the macroeco... | \n",
+ "
\n",
+ " \n",
+ " | 102 | \n",
+ " CE 4395 | \n",
+ " 0 | \n",
+ " SUSTAINABLE ENGINEERING DESIGN PROJECT. 3 Hours. | \n",
+ " | \n",
+ " IE 2308, ECON 2305, CE 3300 | \n",
+ " Following the engineering design process, stud... | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Course Num Finished Course Name \\\n",
+ "53 CE 4308 0 TEMPORARY STRUCTURES. 3 Hours. \n",
+ "54 CE 4309 0 ADVANCED MATERIALS MECHANICAL TESTING AND CHAR... \n",
+ "55 CE 4310 0 SYSTEM EVALUATION IN CIVIL ENGINEERING. 3 Hours. \n",
+ "56 CE 4311 0 URBAN TRANSPORTATION INFRASTRUCTURE PLANNING. ... \n",
+ "57 CE 4312 0 STREET AND HIGHWAY DESIGN. 3 Hours. \n",
+ "58 CE 4313 0 TRAFFIC ENGINEERING. 3 Hours. \n",
+ "59 CE 4314 0 INTRODUCTION TO RAILROAD ENGINEERING. 3 Hours. \n",
+ "60 CE 4318 0 MACHINE LEARNING IN CIVIL ENGINEERING. 3 Hours. \n",
+ "61 CE 4319 0 CIVIL ENGINEERING INFORMATICS. 3 Hours. \n",
+ "62 CE 4320 0 EARTH STRUCTURES DESIGN. 3 Hours. \n",
+ "63 CE 4321 0 FOUNDATION ENGINEERING. 3 Hours. \n",
+ "64 CE 4322 0 APPLICATIONS WITH GEOSYNTHETICS. 3 Hours. \n",
+ "65 CE 4323 0 LANDFILL DESIGN. 3 Hours. \n",
+ "66 CE 4324 0 MECHANICS OF MATERIALS II. 3 Hours. \n",
+ "67 CE 4325 0 FUNDAMENTALS OF FINITE ELEMENT METHOD. 3 Hours. \n",
+ "68 CE 4326 0 GIS/HYDROLOGIC AND HYDRAULIC MODELING. 3 Hours. \n",
+ "69 CE 4327 0 SITE REMEDIATION ENGINEERING. 3 Hours. \n",
+ "70 CE 4328 0 WATER SYSTEM DESIGN. 3 Hours. \n",
+ "71 CE 4330 0 HYDRAULIC DESIGN. 3 Hours. \n",
+ "72 CE 4332 0 CONSTRUCTION EQUIPMENT, METHODS, & MANAGEMENT.... \n",
+ "73 CE 4334 0 DRONES & ADVANCED CONSTRUCTION TECHNOLOGY. 3 ... \n",
+ "74 CE 4335 0 GEOTECHNICAL ASPECTS OF CONSTRUCTION. 3 Hours. \n",
+ "75 CE 4336 0 HOT MIX ASPHALT DESIGN & CONSTRUCTION. 3 Hours. \n",
+ "76 CE 4337 0 PORTLAND CEMENT CONCRETE PAVEMENTS. 3 Hours. \n",
+ "77 CE 4347 0 REINFORCED CONCRETE DESIGN. 3 Hours. \n",
+ "78 CE 4348 0 STRUCTURAL DESIGN IN STEEL. 3 Hours. \n",
+ "79 CE 4350 0 INTRODUCTION TO AIR POLLUTION. 3 Hours. \n",
+ "80 CE 4351 0 PHYSICAL UNIT PROCESSES. 3 Hours. \n",
+ "81 CE 4352 0 PROFESSIONAL PRACTICE. 3 Hours. \n",
+ "82 CE 4353 0 WATER CHEMISTRY. 3 Hours. \n",
+ "83 CE 4354 0 INTRODUCTION TO SOLID WASTE ENGINEERING. 3 Ho... \n",
+ "84 CE 4355 0 DESIGN OF WATER AND WASTEWATER TREATMENT FACIL... \n",
+ "85 CE 4356 0 ADVANCED STEEL DESIGN. 3 Hours. \n",
+ "86 CE 4357 0 INTRODUCTION TO BIOLOGICAL WASTEWATER TREATMEN... \n",
+ "87 CE 4358 0 OPEN CONDUIT SYSTEM. 3 Hours. \n",
+ "88 CE 4360 0 DESIGN OF STRUCTURAL MASONRY. 3 Hours. \n",
+ "89 CE 4361 0 ADVANCED REINFORCED CONCRETE DESIGN. 3 Hours. \n",
+ "90 CE 4363 0 FUNDAMENTALS OF PRESTRESSED CONCRETE. 3 Hours. \n",
+ "91 CE 4365 0 STRUCTURAL WOOD DESIGN. 3 Hours. \n",
+ "92 CE 4366 0 FUNDAMENTALS OF FIBER REINFORCED COMPOSITES. ... \n",
+ "93 CE 4368 0 ADVANCED STRUCTURAL ANALYSIS. 3 Hours. \n",
+ "94 CE 4369 0 LOADS ON STRUCTURES. 3 Hours. \n",
+ "95 CE 4383 0 SENIOR PROJECT. 3 Hours. \n",
+ "96 CE 4391 0 PROBLEMS IN CIVIL ENGINEERING. 3 Hours. \n",
+ "97 CE 4393 0 INDUSTRIAL INTERNSHIP. 3 Hours. \n",
+ "98 CE 4394 0 RESEARCH INTERNSHIP. 3 Hours. \n",
+ "99 IE 2308 0 ECONOMICS FOR ENGINEERS. 3 Hours. \n",
+ "100 MATH 1426 0 CALCULUS I. 4 Hours. \n",
+ "101 ECON 2305 0 PRINCIPLES OF MACROECONOMICS. 3 Hours. \n",
+ "102 CE 4395 0 SUSTAINABLE ENGINEERING DESIGN PROJECT. 3 Hours. \n",
+ "\n",
+ " Pre_Requisites Co_Requisites \\\n",
+ "53 CE 3343, CE 3341 \n",
+ "54 CE 3361 \n",
+ "55 IE 2308, CE 3301 \n",
+ "56 CE 3302 \n",
+ "57 CE 3302 \n",
+ "58 CE 3302 \n",
+ "59 CE 3302 \n",
+ "60 CE 3301 \n",
+ "61 CE 3301 \n",
+ "62 CE 3343 \n",
+ "63 CE 3343, CE 3341 \n",
+ "64 CE 3343 \n",
+ "65 CE 3343 \n",
+ "66 CE 2313 \n",
+ "67 CE 3341 \n",
+ "68 CE 3342 \n",
+ "69 CE 3334 \n",
+ "70 CE 3342 \n",
+ "71 CE 3342 \n",
+ "72 CE 3311 \n",
+ "73 CE 3311, CE 2331 \n",
+ "74 CE 3343 \n",
+ "75 CE 3361 \n",
+ "76 CE 3361 \n",
+ "77 CE 3341 \n",
+ "78 CE 3341 \n",
+ "79 CE 3334 \n",
+ "80 CE 3334, CE 3131 \n",
+ "81 CE 3311, CE 3210 \n",
+ "82 CE 3131, CE 3334 \n",
+ "83 CE 3334 \n",
+ "84 CE 3334, CE 3142 \n",
+ "85 CE 4348 \n",
+ "86 CE 3131, CE 3334 \n",
+ "87 CE 3342 \n",
+ "88 CE 3341 \n",
+ "89 CE 4347 \n",
+ "90 CE 4347 \n",
+ "91 CE 3341 \n",
+ "92 CE 3341 \n",
+ "93 CE 3341 \n",
+ "94 CE 3341 \n",
+ "95 CE 4352, CE 4328|CE 4347 \n",
+ "96 \n",
+ "97 CE 3342, CE 3341 \n",
+ "98 CE 3342, CE 3341 \n",
+ "99 MATH 1426 \n",
+ "100 \n",
+ "101 \n",
+ "102 IE 2308, ECON 2305, CE 3300 \n",
+ "\n",
+ " Description \n",
+ "53 Analysis and design of temporary structures. T... \n",
+ "54 Providing comprehensive understanding of the m... \n",
+ "55 Techniques necessary to perform economic and m... \n",
+ "56 Urban transportation system design, planning, ... \n",
+ "57 The geometric design concepts for urban and ru... \n",
+ "58 Design and control of fixed-time, actuated, an... \n",
+ "59 Overview of the railroad industry in the Unite... \n",
+ "60 Machine learning is transforming the way we ap... \n",
+ "61 The course introduces students to computer too... \n",
+ "62 Study of the states of stress and analysis/des... \n",
+ "63 Aspects of design and construction considerati... \n",
+ "64 Definitions and properties of geotextiles, geo... \n",
+ "65 Introduction and types of landfills, landfill ... \n",
+ "66 Theories of stress and deformation, stress-str... \n",
+ "67 Stiffness method using basic equations and vir... \n",
+ "68 Use of Geographic Information Systems (GIS) an... \n",
+ "69 This course provides practical understanding o... \n",
+ "70 Hydraulic/hydrologic analysis and design of mu... \n",
+ "71 Design methods for appurtenances of water conv... \n",
+ "72 Introduction to the construction industry and ... \n",
+ "73 A practical course for technologies and their ... \n",
+ "74 Review of engineering geology and soil mechani... \n",
+ "75 An in-depth study of the properties of constit... \n",
+ "76 Portland cement concrete mix design and produc... \n",
+ "77 An analysis, design and synthesis course for c... \n",
+ "78 A design synthesis course for structural steel... \n",
+ "79 An introduction to the air pollution field, in... \n",
+ "80 Principles of unit process modeling using reac... \n",
+ "81 Professional practice issues in the private an... \n",
+ "82 Principles of water chemistry applied to the t... \n",
+ "83 This course provides an overview of the variou... \n",
+ "84 Design of facilities commonly used in water an... \n",
+ "85 Covers torsional design of beams, beams with w... \n",
+ "86 Basic understanding of biological processes us... \n",
+ "87 Non-pressure conduit and channel flow, surface... \n",
+ "88 Covers masonry unit types and mortar types, re... \n",
+ "89 Advanced topics on structural design of concre... \n",
+ "90 Introduction to pre-tensioned concrete structu... \n",
+ "91 Covers material grade and properties of wood, ... \n",
+ "92 Introduction to basic analysis, design and man... \n",
+ "93 Advanced analysis of indeterminate beams, fram... \n",
+ "94 Structural analysis of structures under gravit... \n",
+ "95 Planning, analysis of alternatives, and design... \n",
+ "96 Selected problems in civil engineering on an i... \n",
+ "97 Student to experience industrial internship un... \n",
+ "98 Student to experience research internship unde... \n",
+ "99 Methods used for determining the comparative f... \n",
+ "100 Concepts of limit, continuity, differentiation... \n",
+ "101 (ECON 2301). Elementary models of the macroeco... \n",
+ "102 Following the engineering design process, stud... "
+ ]
+ },
+ "execution_count": 3,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "department = \"CE\"\n",
+ "db_path = \"/Users/johna/SmartAdvisor/SmartAdvisors/data/classes.db\"\n",
+ " \n",
+ "db = sqlite3.connect(db_path)\n",
+ "cur = db.cursor()\n",
+ "cur.execute(f\"SELECT * FROM ClassesFor{department}\")\n",
+ "data = cur.fetchall()\n",
+ "\n",
+ "transcript_pdf_path = \"/Users/johna/Downloads/SSR_TSRPT_UN (20) (1).pdf\"\n",
+ "extracted_courses = ps.extract_all_courses(transcript_pdf_path)\n",
+ "\n",
+ "extracted_courses = np.array(extracted_courses)\n",
+ "df_extracted_courses = pd.DataFrame(extracted_courses, columns=[\"Finished Courses\"])\n",
+ "\n",
+ "df_catalog = pd.DataFrame(data, columns=(\"Course Num\", \"Course Name\", \"Pre_Requisites\", \"Co_Requisites\", \"Description\"))\n",
+ "df_catalog.insert(loc=1,column=\"Finished\", value=0)\n",
+ "df_catalog[\"Course Num\"] = df_catalog[\"Course Num\"].str.replace('\\xa0', ' ')\n",
+ "df_catalog.tail(50)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "id": "fc339b9a",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "['ACCT 2301'] is extra courses\n",
+ "['ADVT 2337'] is extra courses\n",
+ "['ASTR 1346'] is extra courses\n",
+ "['BIOL 1333'] is extra courses\n",
+ "['COMS 1301'] is extra courses\n",
+ "['ENGL 1302'] is extra courses\n",
+ "['ENGL 2319'] is extra courses\n",
+ "['ENGL 2329'] is extra courses\n",
+ "['EXSA 1247'] is extra courses\n",
+ "['GEOL 3340'] is extra courses\n",
+ "['HIST 1301'] is extra courses\n",
+ "['HIST 1302'] is extra courses\n",
+ "['INSY 2303'] is extra courses\n",
+ "['MATH 1303'] is extra courses\n",
+ "['MATH 1308'] is extra courses\n",
+ "['MATH 2326'] is extra courses\n",
+ "['MUSI 1300'] is extra courses\n",
+ "['PHIL 1301'] is extra courses\n",
+ "['PHYS 1444'] is extra courses\n",
+ "['PLAN 1301'] is extra courses\n",
+ "['POLS 2311'] is extra courses\n",
+ "['POLS 2312'] is extra courses\n",
+ "['PSYC 1315'] is extra courses\n",
+ "['SPAN 1441'] is extra courses\n",
+ "['SPAN 1442'] is extra courses\n",
+ "['UNIV-EN 1131'] is extra courses\n"
+ ]
+ }
+ ],
+ "source": [
+ "for i in df_extracted_courses.values:\n",
+ " # print(i[0])\n",
+ " # print(i[0], df_catalog[\"Course Num\"].values)\n",
+ " # Add .values to check against the data, not the index\n",
+ " if i[0] in df_catalog[\"Course Num\"].values:\n",
+ " df_catalog.loc[df_catalog[\"Course Num\"].isin(df_extracted_courses), \"Finished\"] = 1\n",
+ " else:\n",
+ " print(f\"{i} is extra courses\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "id": "a2b86668",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Course Name | \n",
+ " Formal Name | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " CSE 1310 | \n",
+ " Intro to Programming | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " ENGR 1101 | \n",
+ " Intro to Engineering | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " UNIV-EN 1131 | \n",
+ " Student Success | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " MATH 1426 | \n",
+ " Calculus 1 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " ENGL 1301 | \n",
+ " Rhetoric & Composition | \n",
+ "
\n",
+ " \n",
+ " | 5 | \n",
+ " CSE 1106 | \n",
+ " Intro to CSE | \n",
+ "
\n",
+ " \n",
+ " | 6 | \n",
+ " CSE 1320 | \n",
+ " Intermediate Programming | \n",
+ "
\n",
+ " \n",
+ " | 7 | \n",
+ " MATH 2425 | \n",
+ " Calculus 2 | \n",
+ "
\n",
+ " \n",
+ " | 8 | \n",
+ " PHYS 1443 | \n",
+ " General Technical Physics 1 | \n",
+ "
\n",
+ " \n",
+ " | 9 | \n",
+ " CSE 2315 | \n",
+ " Discrete Structures | \n",
+ "
\n",
+ " \n",
+ " | 10 | \n",
+ " CSE 1325 | \n",
+ " Object-Oriented Programming | \n",
+ "
\n",
+ " \n",
+ " | 11 | \n",
+ " CSE 2312 | \n",
+ " Computer Organization | \n",
+ "
\n",
+ " \n",
+ " | 12 | \n",
+ " CSE 3318 | \n",
+ " Algorithms and Data Structures | \n",
+ "
\n",
+ " \n",
+ " | 13 | \n",
+ " PHYS 1444 | \n",
+ " General Technical Physics 2 | \n",
+ "
\n",
+ " \n",
+ " | 14 | \n",
+ " CSE 3380 | \n",
+ " Linear Algebra for CSE | \n",
+ "
\n",
+ " \n",
+ " | 15 | \n",
+ " CSE 3310 | \n",
+ " Intro to Software | \n",
+ "
\n",
+ " \n",
+ " | 16 | \n",
+ " CSE 3320 | \n",
+ " Operating Systems | \n",
+ "
\n",
+ " \n",
+ " | 17 | \n",
+ " MATH 2326 | \n",
+ " Calculus III | \n",
+ "
\n",
+ " \n",
+ " | 18 | \n",
+ " COMS 2302 | \n",
+ " Prof. & Technical Comm | \n",
+ "
\n",
+ " \n",
+ " | 19 | \n",
+ " CSE 3302 | \n",
+ " Programming Languages | \n",
+ "
\n",
+ " \n",
+ " | 20 | \n",
+ " CSE 3330 | \n",
+ " Databases | \n",
+ "
\n",
+ " \n",
+ " | 21 | \n",
+ " CSE 3315 | \n",
+ " Theoretical CS | \n",
+ "
\n",
+ " \n",
+ " | 22 | \n",
+ " IE 3301 | \n",
+ " Probability and Statistics | \n",
+ "
\n",
+ " \n",
+ " | 23 | \n",
+ " POLS 2311 | \n",
+ " Govt of the United States | \n",
+ "
\n",
+ " \n",
+ " | 24 | \n",
+ " CSE 4308 | \n",
+ " Artificial Intelligence | \n",
+ "
\n",
+ " \n",
+ " | 25 | \n",
+ " CSE 4344 | \n",
+ " Computer Networks | \n",
+ "
\n",
+ " \n",
+ " | 26 | \n",
+ " POLS 2312 | \n",
+ " State & Local Government | \n",
+ "
\n",
+ " \n",
+ " | 27 | \n",
+ " CSE 3314 | \n",
+ " Professional Practices | \n",
+ "
\n",
+ " \n",
+ " | 28 | \n",
+ " CSE 4316 | \n",
+ " Senior Design I | \n",
+ "
\n",
+ " \n",
+ " | 29 | \n",
+ " CSE 4303 | \n",
+ " Computer Graphics | \n",
+ "
\n",
+ " \n",
+ " | 30 | \n",
+ " CSE 4305 | \n",
+ " Compliers | \n",
+ "
\n",
+ " \n",
+ " | 31 | \n",
+ " CSE 4360 | \n",
+ " Robotics | \n",
+ "
\n",
+ " \n",
+ " | 32 | \n",
+ " ECON 2305 | \n",
+ " Principles of Macroeconomics | \n",
+ "
\n",
+ " \n",
+ " | 33 | \n",
+ " IE 2308 | \n",
+ " Economics for Engineers | \n",
+ "
\n",
+ " \n",
+ " | 34 | \n",
+ " CSE 4317 | \n",
+ " Senior Design 2 | \n",
+ "
\n",
+ " \n",
+ " | 35 | \n",
+ " CSE 4380 | \n",
+ " Info Security | \n",
+ "
\n",
+ " \n",
+ " | 36 | \n",
+ " CSE 4381 | \n",
+ " Info Security 2 | \n",
+ "
\n",
+ " \n",
+ " | 37 | \n",
+ " CSE 4382 | \n",
+ " Secure Programming | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Course Name Formal Name\n",
+ "0 CSE 1310 Intro to Programming\n",
+ "1 ENGR 1101 Intro to Engineering\n",
+ "2 UNIV-EN 1131 Student Success\n",
+ "3 MATH 1426 Calculus 1\n",
+ "4 ENGL 1301 Rhetoric & Composition\n",
+ "5 CSE 1106 Intro to CSE\n",
+ "6 CSE 1320 Intermediate Programming\n",
+ "7 MATH 2425 Calculus 2\n",
+ "8 PHYS 1443 General Technical Physics 1\n",
+ "9 CSE 2315 Discrete Structures\n",
+ "10 CSE 1325 Object-Oriented Programming\n",
+ "11 CSE 2312 Computer Organization\n",
+ "12 CSE 3318 Algorithms and Data Structures\n",
+ "13 PHYS 1444 General Technical Physics 2\n",
+ "14 CSE 3380 Linear Algebra for CSE\n",
+ "15 CSE 3310 Intro to Software\n",
+ "16 CSE 3320 Operating Systems\n",
+ "17 MATH 2326 Calculus III\n",
+ "18 COMS 2302 Prof. & Technical Comm\n",
+ "19 CSE 3302 Programming Languages\n",
+ "20 CSE 3330 Databases\n",
+ "21 CSE 3315 Theoretical CS\n",
+ "22 IE 3301 Probability and Statistics\n",
+ "23 POLS 2311 Govt of the United States\n",
+ "24 CSE 4308 Artificial Intelligence\n",
+ "25 CSE 4344 Computer Networks\n",
+ "26 POLS 2312 State & Local Government\n",
+ "27 CSE 3314 Professional Practices\n",
+ "28 CSE 4316 Senior Design I\n",
+ "29 CSE 4303 Computer Graphics\n",
+ "30 CSE 4305 Compliers\n",
+ "31 CSE 4360 Robotics\n",
+ "32 ECON 2305 Principles of Macroeconomics\n",
+ "33 IE 2308 Economics for Engineers\n",
+ "34 CSE 4317 Senior Design 2\n",
+ "35 CSE 4380 Info Security\n",
+ "36 CSE 4381 Info Security 2\n",
+ "37 CSE 4382 Secure Programming"
+ ]
+ },
+ "execution_count": 5,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "csv = pd.read_csv(\"/Users/johna/SmartAdvisor/SmartAdvisors/data/computer_science_courses.csv\")\n",
+ "csv"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "id": "111a832e",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "\n",
+ "def check_prerequisites_met(course, finished_courses_set, catalog_df):\n",
+ " \"\"\"\n",
+ " Check if all prerequisites for a course are met\n",
+ " \n",
+ " Returns: (bool: prerequisites_met, list: missing_prerequisites)\n",
+ " \"\"\"\n",
+ " course_row = catalog_df[catalog_df['Course Num'] == course]\n",
+ " \n",
+ " if course_row.empty:\n",
+ " return False, [\"Course not found in catalog\"]\n",
+ " \n",
+ " prereqs = course_row['Pre_Requisites'].values\n",
+ " \n",
+ " # If no prerequisites, course is available\n",
+ " if pd.isna(prereqs) or prereqs == '' or str(prereqs).strip() == '':\n",
+ " return True, []\n",
+ " \n",
+ " missing = []\n",
+ " \n",
+ " # Parse prerequisites (handle \"or\" and \"and\" cases)\n",
+ " prereq_list = str(prereqs).replace(' or ', ',').replace(' and ', ',').split(',')\n",
+ " prereq_list = [p.strip() for p in prereq_list if str(p).strip()]\n",
+ " \n",
+ " for prereq in prereq_list:\n",
+ " if prereq not in finished_courses_set:\n",
+ " missing.append(prereq)\n",
+ " \n",
+ " return len(missing) == 0, missing\n",
+ "def get_available_courses(finished_courses_list, catalog_df):\n",
+ " \"\"\"\n",
+ " Get all courses that can be taken based on completed prerequisites\n",
+ " \"\"\"\n",
+ " finished_set = set(finished_courses_list)\n",
+ " available_courses = []\n",
+ " \n",
+ " for idx, row in catalog_df.iterrows():\n",
+ " course_num = row['Course Num']\n",
+ " \n",
+ " # Skip if already completed\n",
+ " if course_num in finished_set:\n",
+ " continue\n",
+ " \n",
+ " # Check if prerequisites are met\n",
+ " prereqs_met, missing = check_prerequisites_met(course_num, finished_set, catalog_df)\n",
+ " \n",
+ " if prereqs_met:\n",
+ " available_courses.append({\n",
+ " 'Course Num': course_num,\n",
+ " 'Course Name': row['Course Name'],\n",
+ " 'Pre_Requisites': row['Pre_Requisites'] if pd.notna(row['Pre_Requisites']) else 'None',\n",
+ " 'Description': row['Description']\n",
+ " })\n",
+ " \n",
+ " return pd.DataFrame(available_courses)\n",
+ "\n",
+ "\n",
+ "def get_blocked_courses_with_missing_prereqs(finished_courses_list, catalog_df):\n",
+ " \"\"\"\n",
+ " Get courses that cannot be taken yet and show what's missing\n",
+ " \"\"\"\n",
+ " finished_set = set(finished_courses_list)\n",
+ " blocked_courses = []\n",
+ " \n",
+ " for idx, row in catalog_df.iterrows():\n",
+ " course_num = row['Course Num']\n",
+ " \n",
+ " # Skip if already completed\n",
+ " if course_num in finished_set:\n",
+ " continue\n",
+ " \n",
+ " # Check prerequisites\n",
+ " prereqs_met, missing = check_prerequisites_met(course_num, finished_set, catalog_df)\n",
+ " \n",
+ " if not prereqs_met and missing:\n",
+ " blocked_courses.append({\n",
+ " 'Course Num': course_num,\n",
+ " 'Course Name': row['Course Name'],\n",
+ " 'Missing Prerequisites': ', '.join(missing),\n",
+ " 'All Prerequisites': row['Pre_Requisites']\n",
+ " })\n",
+ " \n",
+ " return pd.DataFrame(blocked_courses)\n",
+ "\n",
+ "\n",
+ "def create_user_friendly_report(finished_courses_list, catalog_df):\n",
+ " \"\"\"\n",
+ " Create a user-friendly report showing course availability status\n",
+ " \"\"\"\n",
+ " print(\"=\" * 80)\n",
+ " print(\"COURSE AVAILABILITY REPORT\")\n",
+ " print(\"=\" * 80)\n",
+ " \n",
+ " # Get completed courses count\n",
+ " print(f\"\\n✓ Completed Courses: {len(finished_courses_list)}\")\n",
+ " \n",
+ " # Get available courses\n",
+ " available = get_available_courses(finished_courses_list, catalog_df)\n",
+ " print(f\"\\n✓ Courses Available to Take NOW: {len(available)}\")\n",
+ " \n",
+ " if len(available) > 0:\n",
+ " print(\"\\nYou can register for these courses:\")\n",
+ " print(\"-\" * 80)\n",
+ " for idx, row in available.head(80).iterrows():\n",
+ " prereq_text = row['Pre_Requisites'] if row['Pre_Requisites'] != 'None' else 'No prerequisites'\n",
+ " print(f\" • {row['Course Num']}: {row['Course Name']}\")\n",
+ " print(f\" Prerequisites: {prereq_text}\")\n",
+ " print()\n",
+ " \n",
+ " # Get blocked courses\n",
+ " blocked = get_blocked_courses_with_missing_prereqs(finished_courses_list, catalog_df)\n",
+ " print(f\"\\n✗ Courses Still BLOCKED: {len(blocked)}\")\n",
+ " \n",
+ " if len(blocked) > 0:\n",
+ " print(\"\\nYou cannot take these courses yet (showing first 10):\")\n",
+ " print(\"-\" * 80)\n",
+ " for idx, row in blocked.head(80).iterrows():\n",
+ " print(f\" • {row['Course Num']}: {row['Course Name']}\")\n",
+ " print(f\" MISSING: {row['Missing Prerequisites']}\")\n",
+ " print()\n",
+ " \n",
+ " return available, blocked"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "id": "cc83dd60",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "✓ OR-aware functions loaded!\n"
+ ]
+ }
+ ],
+ "source": [
+ "def format_prerequisites_with_or_logic(prereqs_set, description_text):\n",
+ " \"\"\"Extract and preserve OR relationships from course description.\"\"\"\n",
+ " import re\n",
+ " \n",
+ " if not prereqs_set:\n",
+ " return \"\"\n",
+ " \n",
+ " # Find \"X #### or Y ####\" patterns in description\n",
+ " or_pattern = r'([A-Z]{2,4}\\s+\\d{4})\\s+or\\s+([A-Z]{2,4}\\s+\\d{4})'\n",
+ " or_matches = re.findall(or_pattern, description_text, re.IGNORECASE)\n",
+ " \n",
+ " or_groups = []\n",
+ " remaining = set(prereqs_set)\n",
+ " \n",
+ " for match in or_matches:\n",
+ " course1 = ' '.join(match[0].strip().split())\n",
+ " course2 = ' '.join(match[1].strip().split())\n",
+ " \n",
+ " if course1 in remaining and course2 in remaining:\n",
+ " or_groups.append(f\"{course1}|{course2}\")\n",
+ " remaining.discard(course1)\n",
+ " remaining.discard(course2)\n",
+ " \n",
+ " all_parts = list(remaining) + or_groups\n",
+ " return ', '.join(all_parts)\n",
+ "\n",
+ "def check_prerequisites_met_with_or(course, finished_courses_set, catalog_df):\n",
+ " \"\"\"Check if prerequisites are met, handling OR logic with | separator.\"\"\"\n",
+ " course_row = catalog_df[catalog_df['Course Num'] == course]\n",
+ " \n",
+ " if course_row.empty:\n",
+ " return False, [\"Course not found in catalog\"]\n",
+ " \n",
+ " prereqs = course_row['Pre_Requisites'].values[0]\n",
+ " \n",
+ " if pd.isna(prereqs) or prereqs == '' or prereqs.strip() == '':\n",
+ " return True, []\n",
+ " \n",
+ " and_groups = [g.strip() for g in prereqs.split(',') if g.strip()]\n",
+ " missing_groups = []\n",
+ " \n",
+ " for group in and_groups:\n",
+ " if '|' in group:\n",
+ " # OR group - need at least ONE\n",
+ " or_courses = [c.strip() for c in group.split('|')]\n",
+ " has_any = any(course in finished_courses_set for course in or_courses)\n",
+ " if not has_any:\n",
+ " missing_groups.append(f\"({' or '.join(or_courses)})\")\n",
+ " else:\n",
+ " # Single required course\n",
+ " if group not in finished_courses_set:\n",
+ " missing_groups.append(group)\n",
+ " \n",
+ " return len(missing_groups) == 0, missing_groups\n",
+ "\n",
+ "\n",
+ "def get_available_courses_with_or(finished_courses_list, catalog_df):\n",
+ " \"\"\"Get all courses that can be taken, handling OR prerequisites.\"\"\"\n",
+ " finished_set = set(finished_courses_list)\n",
+ " available_courses = []\n",
+ " \n",
+ " for idx, row in catalog_df.iterrows():\n",
+ " course_num = row['Course Num']\n",
+ " if course_num in finished_set:\n",
+ " continue\n",
+ " \n",
+ " prereqs_met, missing = check_prerequisites_met_with_or(course_num, finished_set, catalog_df)\n",
+ " \n",
+ " if prereqs_met:\n",
+ " available_courses.append({\n",
+ " 'Course Num': course_num,\n",
+ " 'Course Name': row['Course Name'],\n",
+ " 'Pre_Requisites': row['Pre_Requisites'] if pd.notna(row['Pre_Requisites']) else 'None'\n",
+ " })\n",
+ " \n",
+ " return pd.DataFrame(available_courses)\n",
+ "\n",
+ "print(\"✓ OR-aware functions loaded!\")\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "id": "14ecc5f9",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "finished_list = df_extracted_courses[\"Finished Courses\"].tolist()\n",
+ "finished_set = set(finished_list)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "id": "ae285690",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "You can take 41 courses!\n",
+ " Course Num Course Name\n",
+ "0 CE 1000 FRESHMAN UNDERGRADUATE RESEARCH. 0 Hours.\n",
+ "1 CE 1252 COMPUTER TOOLS - AUTOCAD. 2 Hours.\n",
+ "2 CE 2000 SOPHOMORE UNDERGRADUATE RESEARCH. 0 Hours.\n",
+ "3 CE 2152 COMPUTER TOOLS - MATHCAD. 1 Hour.\n",
+ "4 CE 2191 PROBLEMS IN CIVIL ENGINEERING. 1 Hour.\n",
+ "5 CE 2291 PROBLEMS IN CIVIL ENGINEERING. 2 Hours.\n",
+ "6 CE 2312 STATICS AND DYNAMICS FOR NON-CE MAJORS. 3 Hours.\n",
+ "7 CE 2391 PROBLEMS IN CIVIL ENGINEERING. 3 Hours.\n",
+ "8 CE 3000 JUNIOR UNDERGRADUATE RESEARCH. 0 Hours.\n",
+ "9 CE 3131 ENVIRONMENTAL ANALYSIS. 1 Hour.\n",
+ "10 CE 3143 PROPERTIES AND BEHAVIOR OF SOILS. 1 Hour.\n",
+ "11 CE 3300 INTRODUCTION TO SUSTAINABLE ENGINEERING. 3 Ho...\n",
+ "12 IE 3301 ENGINEERING PROBABILITY. 3 Hours.\n",
+ "13 MATH 1324 ALGEBRA AND TRIGONOMETRY. 3 Hours.\n",
+ "14 CE 3334 PRINCIPLES OF ENVIRONMENTAL ENGINEERING. 3 Ho...\n",
+ "15 CE 3341 STRUCTURAL ANALYSIS. 3 Hours.\n",
+ "16 CE 3342 WATER RESOURCES ENGINEERING. 3 Hours.\n",
+ "17 CE 3343 SOIL MECHANICS. 3 Hours.\n",
+ "18 CE 4000 SENIOR UNDERGRADUATE RESEARCH. 0 Hours.\n",
+ "19 CE 4191 PROBLEMS IN CIVIL ENGINEERING. 1 Hour.\n",
+ "20 CE 4291 PROBLEMS IN CIVIL ENGINEERING. 2 Hours.\n",
+ "21 CE 4300 ADVANCED TOPICS IN CIVIL ENGINEERING. 3 Hours.\n",
+ "22 CE 4301 ADVANCED TOPICS IN CIVIL ENGINEERING WITH LAB....\n",
+ "23 CE 4303 CONSTRUCTION PROJECT ADMINISTRATION. 3 Hours.\n",
+ "24 CE 4304 CONSTRUCTION CONTRACTS, SPECIFICATIONS, & ADMI...\n",
+ "25 CE 4305 TRENCHLESS TECHNOLOGY METHODS. 3 Hours.\n",
+ "26 CE 4306 INFRASTRUCTURE ASSET MANAGEMENT. 3 Hours.\n",
+ "27 CE 4307 CONSTRUCTION SUSTAINABILITY. 3 Hours.\n",
+ "28 CE 4310 SYSTEM EVALUATION IN CIVIL ENGINEERING. 3 Hours.\n",
+ "29 CE 4311 URBAN TRANSPORTATION INFRASTRUCTURE PLANNING. ...\n",
+ "30 CE 4312 STREET AND HIGHWAY DESIGN. 3 Hours.\n",
+ "31 CE 4313 TRAFFIC ENGINEERING. 3 Hours.\n",
+ "32 CE 4314 INTRODUCTION TO RAILROAD ENGINEERING. 3 Hours.\n",
+ "33 CE 4318 MACHINE LEARNING IN CIVIL ENGINEERING. 3 Hours.\n",
+ "34 CE 4319 CIVIL ENGINEERING INFORMATICS. 3 Hours.\n",
+ "35 CE 4324 MECHANICS OF MATERIALS II. 3 Hours.\n",
+ "36 CE 4332 CONSTRUCTION EQUIPMENT, METHODS, & MANAGEMENT....\n",
+ "37 CE 4334 DRONES & ADVANCED CONSTRUCTION TECHNOLOGY. 3 ...\n",
+ "38 CE 4352 PROFESSIONAL PRACTICE. 3 Hours.\n",
+ "39 CE 4391 PROBLEMS IN CIVIL ENGINEERING. 3 Hours.\n",
+ "40 CE 4395 SUSTAINABLE ENGINEERING DESIGN PROJECT. 3 Hours.\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Course Num | \n",
+ " Course Name | \n",
+ " Pre_Requisites | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " CE 1000 | \n",
+ " FRESHMAN UNDERGRADUATE RESEARCH. 0 Hours. | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " CE 1252 | \n",
+ " COMPUTER TOOLS - AUTOCAD. 2 Hours. | \n",
+ " MATH 1302 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " CE 2000 | \n",
+ " SOPHOMORE UNDERGRADUATE RESEARCH. 0 Hours. | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " CE 2152 | \n",
+ " COMPUTER TOOLS - MATHCAD. 1 Hour. | \n",
+ " PHYS 1443 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " CE 2191 | \n",
+ " PROBLEMS IN CIVIL ENGINEERING. 1 Hour. | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " | 5 | \n",
+ " CE 2291 | \n",
+ " PROBLEMS IN CIVIL ENGINEERING. 2 Hours. | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " | 6 | \n",
+ " CE 2312 | \n",
+ " STATICS AND DYNAMICS FOR NON-CE MAJORS. 3 Hours. | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " | 7 | \n",
+ " CE 2391 | \n",
+ " PROBLEMS IN CIVIL ENGINEERING. 3 Hours. | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " | 8 | \n",
+ " CE 3000 | \n",
+ " JUNIOR UNDERGRADUATE RESEARCH. 0 Hours. | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " | 9 | \n",
+ " CE 3131 | \n",
+ " ENVIRONMENTAL ANALYSIS. 1 Hour. | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " | 10 | \n",
+ " CE 3143 | \n",
+ " PROPERTIES AND BEHAVIOR OF SOILS. 1 Hour. | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " | 11 | \n",
+ " CE 3300 | \n",
+ " INTRODUCTION TO SUSTAINABLE ENGINEERING. 3 Ho... | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " | 12 | \n",
+ " IE 3301 | \n",
+ " ENGINEERING PROBABILITY. 3 Hours. | \n",
+ " MATH 2425 | \n",
+ "
\n",
+ " \n",
+ " | 13 | \n",
+ " MATH 1324 | \n",
+ " ALGEBRA AND TRIGONOMETRY. 3 Hours. | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " | 14 | \n",
+ " CE 3334 | \n",
+ " PRINCIPLES OF ENVIRONMENTAL ENGINEERING. 3 Ho... | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " | 15 | \n",
+ " CE 3341 | \n",
+ " STRUCTURAL ANALYSIS. 3 Hours. | \n",
+ " CE 2313 | \n",
+ "
\n",
+ " \n",
+ " | 16 | \n",
+ " CE 3342 | \n",
+ " WATER RESOURCES ENGINEERING. 3 Hours. | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " | 17 | \n",
+ " CE 3343 | \n",
+ " SOIL MECHANICS. 3 Hours. | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " | 18 | \n",
+ " CE 4000 | \n",
+ " SENIOR UNDERGRADUATE RESEARCH. 0 Hours. | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " | 19 | \n",
+ " CE 4191 | \n",
+ " PROBLEMS IN CIVIL ENGINEERING. 1 Hour. | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " | 20 | \n",
+ " CE 4291 | \n",
+ " PROBLEMS IN CIVIL ENGINEERING. 2 Hours. | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " | 21 | \n",
+ " CE 4300 | \n",
+ " ADVANCED TOPICS IN CIVIL ENGINEERING. 3 Hours. | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " | 22 | \n",
+ " CE 4301 | \n",
+ " ADVANCED TOPICS IN CIVIL ENGINEERING WITH LAB.... | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " | 23 | \n",
+ " CE 4303 | \n",
+ " CONSTRUCTION PROJECT ADMINISTRATION. 3 Hours. | \n",
+ " CE 3311 | \n",
+ "
\n",
+ " \n",
+ " | 24 | \n",
+ " CE 4304 | \n",
+ " CONSTRUCTION CONTRACTS, SPECIFICATIONS, & ADMI... | \n",
+ " CE 3311 | \n",
+ "
\n",
+ " \n",
+ " | 25 | \n",
+ " CE 4305 | \n",
+ " TRENCHLESS TECHNOLOGY METHODS. 3 Hours. | \n",
+ " CE 3311 | \n",
+ "
\n",
+ " \n",
+ " | 26 | \n",
+ " CE 4306 | \n",
+ " INFRASTRUCTURE ASSET MANAGEMENT. 3 Hours. | \n",
+ " CE 3311 | \n",
+ "
\n",
+ " \n",
+ " | 27 | \n",
+ " CE 4307 | \n",
+ " CONSTRUCTION SUSTAINABILITY. 3 Hours. | \n",
+ " CE 3311 | \n",
+ "
\n",
+ " \n",
+ " | 28 | \n",
+ " CE 4310 | \n",
+ " SYSTEM EVALUATION IN CIVIL ENGINEERING. 3 Hours. | \n",
+ " IE 2308, CE 3301 | \n",
+ "
\n",
+ " \n",
+ " | 29 | \n",
+ " CE 4311 | \n",
+ " URBAN TRANSPORTATION INFRASTRUCTURE PLANNING. ... | \n",
+ " CE 3302 | \n",
+ "
\n",
+ " \n",
+ " | 30 | \n",
+ " CE 4312 | \n",
+ " STREET AND HIGHWAY DESIGN. 3 Hours. | \n",
+ " CE 3302 | \n",
+ "
\n",
+ " \n",
+ " | 31 | \n",
+ " CE 4313 | \n",
+ " TRAFFIC ENGINEERING. 3 Hours. | \n",
+ " CE 3302 | \n",
+ "
\n",
+ " \n",
+ " | 32 | \n",
+ " CE 4314 | \n",
+ " INTRODUCTION TO RAILROAD ENGINEERING. 3 Hours. | \n",
+ " CE 3302 | \n",
+ "
\n",
+ " \n",
+ " | 33 | \n",
+ " CE 4318 | \n",
+ " MACHINE LEARNING IN CIVIL ENGINEERING. 3 Hours. | \n",
+ " CE 3301 | \n",
+ "
\n",
+ " \n",
+ " | 34 | \n",
+ " CE 4319 | \n",
+ " CIVIL ENGINEERING INFORMATICS. 3 Hours. | \n",
+ " CE 3301 | \n",
+ "
\n",
+ " \n",
+ " | 35 | \n",
+ " CE 4324 | \n",
+ " MECHANICS OF MATERIALS II. 3 Hours. | \n",
+ " CE 2313 | \n",
+ "
\n",
+ " \n",
+ " | 36 | \n",
+ " CE 4332 | \n",
+ " CONSTRUCTION EQUIPMENT, METHODS, & MANAGEMENT.... | \n",
+ " CE 3311 | \n",
+ "
\n",
+ " \n",
+ " | 37 | \n",
+ " CE 4334 | \n",
+ " DRONES & ADVANCED CONSTRUCTION TECHNOLOGY. 3 ... | \n",
+ " CE 3311, CE 2331 | \n",
+ "
\n",
+ " \n",
+ " | 38 | \n",
+ " CE 4352 | \n",
+ " PROFESSIONAL PRACTICE. 3 Hours. | \n",
+ " CE 3311, CE 3210 | \n",
+ "
\n",
+ " \n",
+ " | 39 | \n",
+ " CE 4391 | \n",
+ " PROBLEMS IN CIVIL ENGINEERING. 3 Hours. | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " | 40 | \n",
+ " CE 4395 | \n",
+ " SUSTAINABLE ENGINEERING DESIGN PROJECT. 3 Hours. | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Course Num Course Name \\\n",
+ "0 CE 1000 FRESHMAN UNDERGRADUATE RESEARCH. 0 Hours. \n",
+ "1 CE 1252 COMPUTER TOOLS - AUTOCAD. 2 Hours. \n",
+ "2 CE 2000 SOPHOMORE UNDERGRADUATE RESEARCH. 0 Hours. \n",
+ "3 CE 2152 COMPUTER TOOLS - MATHCAD. 1 Hour. \n",
+ "4 CE 2191 PROBLEMS IN CIVIL ENGINEERING. 1 Hour. \n",
+ "5 CE 2291 PROBLEMS IN CIVIL ENGINEERING. 2 Hours. \n",
+ "6 CE 2312 STATICS AND DYNAMICS FOR NON-CE MAJORS. 3 Hours. \n",
+ "7 CE 2391 PROBLEMS IN CIVIL ENGINEERING. 3 Hours. \n",
+ "8 CE 3000 JUNIOR UNDERGRADUATE RESEARCH. 0 Hours. \n",
+ "9 CE 3131 ENVIRONMENTAL ANALYSIS. 1 Hour. \n",
+ "10 CE 3143 PROPERTIES AND BEHAVIOR OF SOILS. 1 Hour. \n",
+ "11 CE 3300 INTRODUCTION TO SUSTAINABLE ENGINEERING. 3 Ho... \n",
+ "12 IE 3301 ENGINEERING PROBABILITY. 3 Hours. \n",
+ "13 MATH 1324 ALGEBRA AND TRIGONOMETRY. 3 Hours. \n",
+ "14 CE 3334 PRINCIPLES OF ENVIRONMENTAL ENGINEERING. 3 Ho... \n",
+ "15 CE 3341 STRUCTURAL ANALYSIS. 3 Hours. \n",
+ "16 CE 3342 WATER RESOURCES ENGINEERING. 3 Hours. \n",
+ "17 CE 3343 SOIL MECHANICS. 3 Hours. \n",
+ "18 CE 4000 SENIOR UNDERGRADUATE RESEARCH. 0 Hours. \n",
+ "19 CE 4191 PROBLEMS IN CIVIL ENGINEERING. 1 Hour. \n",
+ "20 CE 4291 PROBLEMS IN CIVIL ENGINEERING. 2 Hours. \n",
+ "21 CE 4300 ADVANCED TOPICS IN CIVIL ENGINEERING. 3 Hours. \n",
+ "22 CE 4301 ADVANCED TOPICS IN CIVIL ENGINEERING WITH LAB.... \n",
+ "23 CE 4303 CONSTRUCTION PROJECT ADMINISTRATION. 3 Hours. \n",
+ "24 CE 4304 CONSTRUCTION CONTRACTS, SPECIFICATIONS, & ADMI... \n",
+ "25 CE 4305 TRENCHLESS TECHNOLOGY METHODS. 3 Hours. \n",
+ "26 CE 4306 INFRASTRUCTURE ASSET MANAGEMENT. 3 Hours. \n",
+ "27 CE 4307 CONSTRUCTION SUSTAINABILITY. 3 Hours. \n",
+ "28 CE 4310 SYSTEM EVALUATION IN CIVIL ENGINEERING. 3 Hours. \n",
+ "29 CE 4311 URBAN TRANSPORTATION INFRASTRUCTURE PLANNING. ... \n",
+ "30 CE 4312 STREET AND HIGHWAY DESIGN. 3 Hours. \n",
+ "31 CE 4313 TRAFFIC ENGINEERING. 3 Hours. \n",
+ "32 CE 4314 INTRODUCTION TO RAILROAD ENGINEERING. 3 Hours. \n",
+ "33 CE 4318 MACHINE LEARNING IN CIVIL ENGINEERING. 3 Hours. \n",
+ "34 CE 4319 CIVIL ENGINEERING INFORMATICS. 3 Hours. \n",
+ "35 CE 4324 MECHANICS OF MATERIALS II. 3 Hours. \n",
+ "36 CE 4332 CONSTRUCTION EQUIPMENT, METHODS, & MANAGEMENT.... \n",
+ "37 CE 4334 DRONES & ADVANCED CONSTRUCTION TECHNOLOGY. 3 ... \n",
+ "38 CE 4352 PROFESSIONAL PRACTICE. 3 Hours. \n",
+ "39 CE 4391 PROBLEMS IN CIVIL ENGINEERING. 3 Hours. \n",
+ "40 CE 4395 SUSTAINABLE ENGINEERING DESIGN PROJECT. 3 Hours. \n",
+ "\n",
+ " Pre_Requisites \n",
+ "0 \n",
+ "1 MATH 1302 \n",
+ "2 \n",
+ "3 PHYS 1443 \n",
+ "4 \n",
+ "5 \n",
+ "6 \n",
+ "7 \n",
+ "8 \n",
+ "9 \n",
+ "10 \n",
+ "11 \n",
+ "12 MATH 2425 \n",
+ "13 \n",
+ "14 \n",
+ "15 CE 2313 \n",
+ "16 \n",
+ "17 \n",
+ "18 \n",
+ "19 \n",
+ "20 \n",
+ "21 \n",
+ "22 \n",
+ "23 CE 3311 \n",
+ "24 CE 3311 \n",
+ "25 CE 3311 \n",
+ "26 CE 3311 \n",
+ "27 CE 3311 \n",
+ "28 IE 2308, CE 3301 \n",
+ "29 CE 3302 \n",
+ "30 CE 3302 \n",
+ "31 CE 3302 \n",
+ "32 CE 3302 \n",
+ "33 CE 3301 \n",
+ "34 CE 3301 \n",
+ "35 CE 2313 \n",
+ "36 CE 3311 \n",
+ "37 CE 3311, CE 2331 \n",
+ "38 CE 3311, CE 3210 \n",
+ "39 \n",
+ "40 "
+ ]
+ },
+ "execution_count": 9,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "available = get_available_courses_with_or(finished_list, df_catalog)\n",
+ "print(f\"You can take {len(available)} courses!\")\n",
+ "print(available[['Course Num', 'Course Name']])\n",
+ "available"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "id": "c158304e",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "db_path = \"/Users/johna/SmartAdvisor/SmartAdvisors/data/grades.sqlite\"\n",
+ " \n",
+ "db = sqlite3.connect(db_path)\n",
+ "cur = db.cursor()\n",
+ "cur.execute(f\"SELECT subject_id, course_number, course_title, section_number, instructor1 FROM allgrades\")\n",
+ "data = cur.fetchall()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "id": "263f87d7",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "instructors_for_classes = pd.DataFrame(data, columns=[\"Subject ID\", \"Course Number\", \"Course Title\", \"Section Number\", \"Instructor\"])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "id": "b57a7887",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "db_path = \"/Users/johna/SmartAdvisor/SmartAdvisors/data/professors.db\"\n",
+ " \n",
+ "db = sqlite3.connect(db_path)\n",
+ "cur = db.cursor()\n",
+ "cur.execute(f\"SELECT id, name, url, quality_rating, difficulty_rating, total_ratings, tags FROM professors\")\n",
+ "data = cur.fetchall()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "id": "9dcbd797",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " ID | \n",
+ " Name | \n",
+ " URL | \n",
+ " Quality Rating | \n",
+ " Difficulty Rating | \n",
+ " Total Ratings | \n",
+ " Tags | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 936194 | \n",
+ " Aaron Smallwood | \n",
+ " https://www.ratemyprofessors.com/professor/936194 | \n",
+ " 3.8 | \n",
+ " 3.6 | \n",
+ " 49 | \n",
+ " Skip class? You won't pass., Amazing lectures,... | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 655109 | \n",
+ " Abdul Rasheed | \n",
+ " https://www.ratemyprofessors.com/professor/655109 | \n",
+ " 3.5 | \n",
+ " 2.9 | \n",
+ " 11 | \n",
+ " Get ready to read, Group projects, Lots of hom... | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 2510252 | \n",
+ " Aditi Prabhakar | \n",
+ " https://www.ratemyprofessors.com/professor/251... | \n",
+ " 5 | \n",
+ " 3 | \n",
+ " 1 | \n",
+ " EXTRA CREDIT, Accessible outside class, Respected | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 2260609 | \n",
+ " Aera LeBoulluec | \n",
+ " https://www.ratemyprofessors.com/professor/226... | \n",
+ " 2.1 | \n",
+ " 2.9 | \n",
+ " 35 | \n",
+ " Get ready to read, Lots of homework, Lecture h... | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 319052 | \n",
+ " Albert Tong | \n",
+ " https://www.ratemyprofessors.com/professor/319052 | \n",
+ " 2.5 | \n",
+ " 4.2 | \n",
+ " 39 | \n",
+ " Get ready to read, Test heavy, Lots of homewor... | \n",
+ "
\n",
+ " \n",
+ " | ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " | 1525 | \n",
+ " 1846802 | \n",
+ " Matthew Ables | \n",
+ " https://www.ratemyprofessors.com/professor/184... | \n",
+ " 4.7 | \n",
+ " 3.2 | \n",
+ " 13 | \n",
+ " Amazing lectures, Accessible outside class, Cl... | \n",
+ "
\n",
+ " \n",
+ " | 1526 | \n",
+ " 1184465 | \n",
+ " Kamal Awad | \n",
+ " https://www.ratemyprofessors.com/professor/118... | \n",
+ " 3.4 | \n",
+ " 1.6 | \n",
+ " 9 | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " | 1527 | \n",
+ " 1509111 | \n",
+ " Tailar Brown | \n",
+ " https://www.ratemyprofessors.com/professor/150... | \n",
+ " 3.4 | \n",
+ " 3.1 | \n",
+ " 47 | \n",
+ " Tough grader, Clear grading criteria, EXTRA CR... | \n",
+ "
\n",
+ " \n",
+ " | 1528 | \n",
+ " 3049012 | \n",
+ " Douglas Stark | \n",
+ " https://www.ratemyprofessors.com/professor/304... | \n",
+ " 5 | \n",
+ " 4 | \n",
+ " 1 | \n",
+ " Gives good feedback, Get ready to read, Respected | \n",
+ "
\n",
+ " \n",
+ " | 1529 | \n",
+ " 2428344 | \n",
+ " Deok Gun Park | \n",
+ " https://www.ratemyprofessors.com/professor/242... | \n",
+ " 2.4 | \n",
+ " 4.1 | \n",
+ " 16 | \n",
+ " Lots of homework, Tough grader, Lecture heavy,... | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
1530 rows × 7 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " ID Name \\\n",
+ "0 936194 Aaron Smallwood \n",
+ "1 655109 Abdul Rasheed \n",
+ "2 2510252 Aditi Prabhakar \n",
+ "3 2260609 Aera LeBoulluec \n",
+ "4 319052 Albert Tong \n",
+ "... ... ... \n",
+ "1525 1846802 Matthew Ables \n",
+ "1526 1184465 Kamal Awad \n",
+ "1527 1509111 Tailar Brown \n",
+ "1528 3049012 Douglas Stark \n",
+ "1529 2428344 Deok Gun Park \n",
+ "\n",
+ " URL Quality Rating \\\n",
+ "0 https://www.ratemyprofessors.com/professor/936194 3.8 \n",
+ "1 https://www.ratemyprofessors.com/professor/655109 3.5 \n",
+ "2 https://www.ratemyprofessors.com/professor/251... 5 \n",
+ "3 https://www.ratemyprofessors.com/professor/226... 2.1 \n",
+ "4 https://www.ratemyprofessors.com/professor/319052 2.5 \n",
+ "... ... ... \n",
+ "1525 https://www.ratemyprofessors.com/professor/184... 4.7 \n",
+ "1526 https://www.ratemyprofessors.com/professor/118... 3.4 \n",
+ "1527 https://www.ratemyprofessors.com/professor/150... 3.4 \n",
+ "1528 https://www.ratemyprofessors.com/professor/304... 5 \n",
+ "1529 https://www.ratemyprofessors.com/professor/242... 2.4 \n",
+ "\n",
+ " Difficulty Rating Total Ratings \\\n",
+ "0 3.6 49 \n",
+ "1 2.9 11 \n",
+ "2 3 1 \n",
+ "3 2.9 35 \n",
+ "4 4.2 39 \n",
+ "... ... ... \n",
+ "1525 3.2 13 \n",
+ "1526 1.6 9 \n",
+ "1527 3.1 47 \n",
+ "1528 4 1 \n",
+ "1529 4.1 16 \n",
+ "\n",
+ " Tags \n",
+ "0 Skip class? You won't pass., Amazing lectures,... \n",
+ "1 Get ready to read, Group projects, Lots of hom... \n",
+ "2 EXTRA CREDIT, Accessible outside class, Respected \n",
+ "3 Get ready to read, Lots of homework, Lecture h... \n",
+ "4 Get ready to read, Test heavy, Lots of homewor... \n",
+ "... ... \n",
+ "1525 Amazing lectures, Accessible outside class, Cl... \n",
+ "1526 \n",
+ "1527 Tough grader, Clear grading criteria, EXTRA CR... \n",
+ "1528 Gives good feedback, Get ready to read, Respected \n",
+ "1529 Lots of homework, Tough grader, Lecture heavy,... \n",
+ "\n",
+ "[1530 rows x 7 columns]"
+ ]
+ },
+ "execution_count": 13,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "ratings_for_prof = pd.DataFrame(data, columns=[\"ID\",\"Name\",\"URL\",\"Quality Rating\",\"Difficulty Rating\", \"Total Ratings\", \"Tags\"])\n",
+ "ratings_for_prof"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "c8d2b76c",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "id": "d9aaa15a",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Subject ID | \n",
+ " Course Number | \n",
+ " Course Title | \n",
+ " Section Number | \n",
+ " Instructor | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " SPAN | \n",
+ " 5303 | \n",
+ " APPLIED SPANISH LINGUISTICS | \n",
+ " 001 | \n",
+ " A Elliott | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " ECON | \n",
+ " 5337 | \n",
+ " BUSINESS & ECONOMIC FORECASTING | \n",
+ " 001 | \n",
+ " Aaron Smallwood | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " ME | \n",
+ " 5316 | \n",
+ " THERMAL CONDUCTION | \n",
+ " 004 | \n",
+ " Abdolhossein Haji-Sheikh | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " EMBA | \n",
+ " 5413 | \n",
+ " INTERNATIONAL BUSINESS EXPERIENCE | \n",
+ " 002 | \n",
+ " Abdul Rasheed | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " MANA | \n",
+ " 6328 | \n",
+ " SEMINAR IN BUSINESS POLICY | \n",
+ " 001 | \n",
+ " Abdul Rasheed | \n",
+ "
\n",
+ " \n",
+ " | 5 | \n",
+ " KINE | \n",
+ " 5223 | \n",
+ " | \n",
+ " 001 | \n",
+ " Adam Annaccone | \n",
+ "
\n",
+ " \n",
+ " | 6 | \n",
+ " KINE | \n",
+ " 5348 | \n",
+ " PATHOPHYSIOLOGY AND PHARMACOLOGY I | \n",
+ " 001 | \n",
+ " Adam Annaccone | \n",
+ "
\n",
+ " \n",
+ " | 7 | \n",
+ " KINE | \n",
+ " 5235 | \n",
+ " ADVANCED FUNCTIONAL ASSESSMENT AND CORRECTIVE ... | \n",
+ " 001 | \n",
+ " Adam Annaccone | \n",
+ "
\n",
+ " \n",
+ " | 8 | \n",
+ " SOCW | \n",
+ " 5306 | \n",
+ " GENERALIST MACRO PRACTICE | \n",
+ " 001 | \n",
+ " Aditi Prabhakar | \n",
+ "
\n",
+ " \n",
+ " | 9 | \n",
+ " IE | \n",
+ " 5318 | \n",
+ " APPLIED REGRESSION ANALYSIS | \n",
+ " 005 | \n",
+ " Aera LeBoulluec | \n",
+ "
\n",
+ " \n",
+ " | 10 | \n",
+ " NURS | \n",
+ " 5211 | \n",
+ " | \n",
+ " 001 | \n",
+ " Aimee Dunnam | \n",
+ "
\n",
+ " \n",
+ " | 11 | \n",
+ " NURS | \n",
+ " 5324 | \n",
+ " PSYCHIATRIC MENTAL CLINICAL PRACTICE I | \n",
+ " 001 | \n",
+ " Aimee Dunnam | \n",
+ "
\n",
+ " \n",
+ " | 12 | \n",
+ " NURS | \n",
+ " 5650 | \n",
+ " PSYCHIATRIC MENTAL HEALTH NP ADVANCED PRACTICUM | \n",
+ " 001 | \n",
+ " Aimee Dunnam | \n",
+ "
\n",
+ " \n",
+ " | 13 | \n",
+ " NURS | \n",
+ " 5210 | \n",
+ " | \n",
+ " 002 | \n",
+ " Aimee Dunnam | \n",
+ "
\n",
+ " \n",
+ " | 14 | \n",
+ " FREN | \n",
+ " 5331 | \n",
+ " TOPICS IN GENRES OF THE 20TH CENTURY | \n",
+ " 001 | \n",
+ " Aimee Israel-Pelletier | \n",
+ "
\n",
+ " \n",
+ " | 15 | \n",
+ " AE | \n",
+ " 5313 | \n",
+ " FLUID DYNAMICS | \n",
+ " 001 | \n",
+ " Albert Tong | \n",
+ "
\n",
+ " \n",
+ " | 16 | \n",
+ " ME | \n",
+ " 5313 | \n",
+ " FLUID DYNAMICS | \n",
+ " 001 | \n",
+ " Albert Tong | \n",
+ "
\n",
+ " \n",
+ " | 17 | \n",
+ " ME | \n",
+ " 5313 | \n",
+ " FLUID DYNAMICS | \n",
+ " 002 | \n",
+ " Albert Tong | \n",
+ "
\n",
+ " \n",
+ " | 18 | \n",
+ " ME | \n",
+ " 5331 | \n",
+ " ANALYTIC METHODS IN ENGINEERING | \n",
+ " 004 | \n",
+ " Albert Tong | \n",
+ "
\n",
+ " \n",
+ " | 19 | \n",
+ " PAPP | \n",
+ " 5350 | \n",
+ " INTRODUCTION TO PUBLIC ADMINISTRATION | \n",
+ " 001 | \n",
+ " Alejandro Rodriguez | \n",
+ "
\n",
+ " \n",
+ " | 20 | \n",
+ " PAPP | \n",
+ " 5350 | \n",
+ " INTRODUCTION TO PUBLIC ADMINISTRATION | \n",
+ " 500 | \n",
+ " Alejandro Rodriguez | \n",
+ "
\n",
+ " \n",
+ " | 21 | \n",
+ " CE | \n",
+ " 5308 | \n",
+ " STRUCTURAL MASONRY DESIGN | \n",
+ " 001 | \n",
+ " Ali Reza Sayah | \n",
+ "
\n",
+ " \n",
+ " | 22 | \n",
+ " CSE | \n",
+ " 5311 | \n",
+ " DESIGN AND ANALYSIS OF ALGORITHMS | \n",
+ " 003 | \n",
+ " Allison Sullivan | \n",
+ "
\n",
+ " \n",
+ " | 23 | \n",
+ " SOCW | \n",
+ " 5362 | \n",
+ " DIRECT PRACTICE WITH CHILDREN AND FAMILIES | \n",
+ " 004 | \n",
+ " Allison Tomlinson | \n",
+ "
\n",
+ " \n",
+ " | 24 | \n",
+ " SOCW | \n",
+ " 5362 | \n",
+ " DIRECT PRACTICE WITH CHILDREN AND FAMILIES | \n",
+ " 017 | \n",
+ " Allison Tomlinson | \n",
+ "
\n",
+ " \n",
+ " | 25 | \n",
+ " SOCW | \n",
+ " 5362 | \n",
+ " DIRECT PRACTICE WITH CHILDREN AND FAMILIES | \n",
+ " 020 | \n",
+ " Allison Tomlinson | \n",
+ "
\n",
+ " \n",
+ " | 26 | \n",
+ " SOCW | \n",
+ " 5363 | \n",
+ " SOCIAL POLICY FOR CHILDREN & YOUTH | \n",
+ " 012 | \n",
+ " Allison Tomlinson | \n",
+ "
\n",
+ " \n",
+ " | 27 | \n",
+ " NURS | \n",
+ " 5315 | \n",
+ " ADVANCED PATHOPHYSIOLOGY | \n",
+ " 402 | \n",
+ " Allison Tuppeny | \n",
+ "
\n",
+ " \n",
+ " | 28 | \n",
+ " NURSC | \n",
+ " 5315 | \n",
+ " ADVANCED PATHOPHYSIOLOGY | \n",
+ " 402 | \n",
+ " Allison Tuppeny | \n",
+ "
\n",
+ " \n",
+ " | 29 | \n",
+ " OPMA | \n",
+ " 5361 | \n",
+ " OPERATIONS MANAGEMENT | \n",
+ " 001 | \n",
+ " Alper Nakkas | \n",
+ "
\n",
+ " \n",
+ " | 30 | \n",
+ " ARCH | \n",
+ " 5670 | \n",
+ " ADVANCED DESIGN STUDIO | \n",
+ " 002 | \n",
+ " Amanda Aman | \n",
+ "
\n",
+ " \n",
+ " | 31 | \n",
+ " SOCW | \n",
+ " 5313 | \n",
+ " RESEARCH AND EVALUATION METHODS IN SOCIAL WORK II | \n",
+ " 019 | \n",
+ " Amanda Aykanian | \n",
+ "
\n",
+ " \n",
+ " | 32 | \n",
+ " NURS | \n",
+ " 5660 | \n",
+ " FAMILY NP ADVANCED PRACTICUM | \n",
+ " 459 | \n",
+ " Amanda Mendez | \n",
+ "
\n",
+ " \n",
+ " | 33 | \n",
+ " EDUC | \n",
+ " 5394 | \n",
+ " UNDERSTANDING AND DESIGNING CLASSROOM RESEARCH | \n",
+ " 005 | \n",
+ " Amanda Olsen | \n",
+ "
\n",
+ " \n",
+ " | 34 | \n",
+ " EDUC | \n",
+ " 5394 | \n",
+ " UNDERSTANDING AND DESIGNING CLASSROOM RESEARCH | \n",
+ " 105 | \n",
+ " Amanda Olsen | \n",
+ "
\n",
+ " \n",
+ " | 35 | \n",
+ " EDUC | \n",
+ " 5397 | \n",
+ " IMPLEMENTING AND DISSEMINATING CLASSROOM RESEARCH | \n",
+ " 001 | \n",
+ " Amanda Olsen | \n",
+ "
\n",
+ " \n",
+ " | 36 | \n",
+ " NURS | \n",
+ " 6320 | \n",
+ " LEADERSHIP IN HEALTH CARE SYSTEMS | \n",
+ " 400 | \n",
+ " Amber Arnold | \n",
+ "
\n",
+ " \n",
+ " | 37 | \n",
+ " NURS | \n",
+ " 6320 | \n",
+ " LEADERSHIP IN HEALTH CARE SYSTEMS | \n",
+ " 404 | \n",
+ " Amber Arnold | \n",
+ "
\n",
+ " \n",
+ " | 38 | \n",
+ " PSYC | \n",
+ " 5330 | \n",
+ " ADVANCE EMPLOYEE TRAINING AND DEVELOPMENT | \n",
+ " 001 | \n",
+ " Amber Schroeder | \n",
+ "
\n",
+ " \n",
+ " | 39 | \n",
+ " EDAD | \n",
+ " 5330 | \n",
+ " LEADERSHIP IN THE INSTRUCTIONAL SETTING PRACTICUM | \n",
+ " 005 | \n",
+ " Amy Anderson | \n",
+ "
\n",
+ " \n",
+ " | 40 | \n",
+ " EDAD | \n",
+ " 5383 | \n",
+ " THE PRINCIPALSHIP | \n",
+ " 105 | \n",
+ " Amy Anderson | \n",
+ "
\n",
+ " \n",
+ " | 41 | \n",
+ " EDAD | \n",
+ " 5384 | \n",
+ " RESOURCE MANAGEMENT IN EDUCATION | \n",
+ " 105 | \n",
+ " Amy Anderson | \n",
+ "
\n",
+ " \n",
+ " | 42 | \n",
+ " LARC | \n",
+ " 5397 | \n",
+ " THESIS PREP | \n",
+ " 001 | \n",
+ " Amy Archambeau | \n",
+ "
\n",
+ " \n",
+ " | 43 | \n",
+ " LIST | \n",
+ " 5346 | \n",
+ " TEACHING THE WRITING PROCESS | \n",
+ " 005 | \n",
+ " Amy Hinz Horn | \n",
+ "
\n",
+ " \n",
+ " | 44 | \n",
+ " NURS | \n",
+ " 5120 | \n",
+ " ADULT-GERONTOLOGY ASSESSMENT LAB | \n",
+ " 465 | \n",
+ " Amy Lunsford | \n",
+ "
\n",
+ " \n",
+ " | 45 | \n",
+ " NURS | \n",
+ " 5130 | \n",
+ " PEDIATRIC ASSESSMENT LAB | \n",
+ " 474 | \n",
+ " Amy Winslow | \n",
+ "
\n",
+ " \n",
+ " | 46 | \n",
+ " NURS | \n",
+ " 5130 | \n",
+ " PEDIATRIC ASSESSMENT LAB | \n",
+ " 416 | \n",
+ " Amy Winslow | \n",
+ "
\n",
+ " \n",
+ " | 47 | \n",
+ " NURS | \n",
+ " 5120 | \n",
+ " ADULT-GERONTOLOGY ASSESSMENT LAB | \n",
+ " 428 | \n",
+ " Ana Herrera | \n",
+ "
\n",
+ " \n",
+ " | 48 | \n",
+ " MATH | \n",
+ " 5311 | \n",
+ " APPLIED PROBABILITY AND STOCHASTIC PROCESSES | \n",
+ " 001 | \n",
+ " Andrzej Korzeniowski | \n",
+ "
\n",
+ " \n",
+ " | 49 | \n",
+ " NURSG | \n",
+ " 5130 | \n",
+ " PEDIATRIC ASSESSMENT LAB | \n",
+ " 423 | \n",
+ " Angela Miller | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Subject ID Course Number \\\n",
+ "0 SPAN 5303 \n",
+ "1 ECON 5337 \n",
+ "2 ME 5316 \n",
+ "3 EMBA 5413 \n",
+ "4 MANA 6328 \n",
+ "5 KINE 5223 \n",
+ "6 KINE 5348 \n",
+ "7 KINE 5235 \n",
+ "8 SOCW 5306 \n",
+ "9 IE 5318 \n",
+ "10 NURS 5211 \n",
+ "11 NURS 5324 \n",
+ "12 NURS 5650 \n",
+ "13 NURS 5210 \n",
+ "14 FREN 5331 \n",
+ "15 AE 5313 \n",
+ "16 ME 5313 \n",
+ "17 ME 5313 \n",
+ "18 ME 5331 \n",
+ "19 PAPP 5350 \n",
+ "20 PAPP 5350 \n",
+ "21 CE 5308 \n",
+ "22 CSE 5311 \n",
+ "23 SOCW 5362 \n",
+ "24 SOCW 5362 \n",
+ "25 SOCW 5362 \n",
+ "26 SOCW 5363 \n",
+ "27 NURS 5315 \n",
+ "28 NURSC 5315 \n",
+ "29 OPMA 5361 \n",
+ "30 ARCH 5670 \n",
+ "31 SOCW 5313 \n",
+ "32 NURS 5660 \n",
+ "33 EDUC 5394 \n",
+ "34 EDUC 5394 \n",
+ "35 EDUC 5397 \n",
+ "36 NURS 6320 \n",
+ "37 NURS 6320 \n",
+ "38 PSYC 5330 \n",
+ "39 EDAD 5330 \n",
+ "40 EDAD 5383 \n",
+ "41 EDAD 5384 \n",
+ "42 LARC 5397 \n",
+ "43 LIST 5346 \n",
+ "44 NURS 5120 \n",
+ "45 NURS 5130 \n",
+ "46 NURS 5130 \n",
+ "47 NURS 5120 \n",
+ "48 MATH 5311 \n",
+ "49 NURSG 5130 \n",
+ "\n",
+ " Course Title Section Number \\\n",
+ "0 APPLIED SPANISH LINGUISTICS 001 \n",
+ "1 BUSINESS & ECONOMIC FORECASTING 001 \n",
+ "2 THERMAL CONDUCTION 004 \n",
+ "3 INTERNATIONAL BUSINESS EXPERIENCE 002 \n",
+ "4 SEMINAR IN BUSINESS POLICY 001 \n",
+ "5 001 \n",
+ "6 PATHOPHYSIOLOGY AND PHARMACOLOGY I 001 \n",
+ "7 ADVANCED FUNCTIONAL ASSESSMENT AND CORRECTIVE ... 001 \n",
+ "8 GENERALIST MACRO PRACTICE 001 \n",
+ "9 APPLIED REGRESSION ANALYSIS 005 \n",
+ "10 001 \n",
+ "11 PSYCHIATRIC MENTAL CLINICAL PRACTICE I 001 \n",
+ "12 PSYCHIATRIC MENTAL HEALTH NP ADVANCED PRACTICUM 001 \n",
+ "13 002 \n",
+ "14 TOPICS IN GENRES OF THE 20TH CENTURY 001 \n",
+ "15 FLUID DYNAMICS 001 \n",
+ "16 FLUID DYNAMICS 001 \n",
+ "17 FLUID DYNAMICS 002 \n",
+ "18 ANALYTIC METHODS IN ENGINEERING 004 \n",
+ "19 INTRODUCTION TO PUBLIC ADMINISTRATION 001 \n",
+ "20 INTRODUCTION TO PUBLIC ADMINISTRATION 500 \n",
+ "21 STRUCTURAL MASONRY DESIGN 001 \n",
+ "22 DESIGN AND ANALYSIS OF ALGORITHMS 003 \n",
+ "23 DIRECT PRACTICE WITH CHILDREN AND FAMILIES 004 \n",
+ "24 DIRECT PRACTICE WITH CHILDREN AND FAMILIES 017 \n",
+ "25 DIRECT PRACTICE WITH CHILDREN AND FAMILIES 020 \n",
+ "26 SOCIAL POLICY FOR CHILDREN & YOUTH 012 \n",
+ "27 ADVANCED PATHOPHYSIOLOGY 402 \n",
+ "28 ADVANCED PATHOPHYSIOLOGY 402 \n",
+ "29 OPERATIONS MANAGEMENT 001 \n",
+ "30 ADVANCED DESIGN STUDIO 002 \n",
+ "31 RESEARCH AND EVALUATION METHODS IN SOCIAL WORK II 019 \n",
+ "32 FAMILY NP ADVANCED PRACTICUM 459 \n",
+ "33 UNDERSTANDING AND DESIGNING CLASSROOM RESEARCH 005 \n",
+ "34 UNDERSTANDING AND DESIGNING CLASSROOM RESEARCH 105 \n",
+ "35 IMPLEMENTING AND DISSEMINATING CLASSROOM RESEARCH 001 \n",
+ "36 LEADERSHIP IN HEALTH CARE SYSTEMS 400 \n",
+ "37 LEADERSHIP IN HEALTH CARE SYSTEMS 404 \n",
+ "38 ADVANCE EMPLOYEE TRAINING AND DEVELOPMENT 001 \n",
+ "39 LEADERSHIP IN THE INSTRUCTIONAL SETTING PRACTICUM 005 \n",
+ "40 THE PRINCIPALSHIP 105 \n",
+ "41 RESOURCE MANAGEMENT IN EDUCATION 105 \n",
+ "42 THESIS PREP 001 \n",
+ "43 TEACHING THE WRITING PROCESS 005 \n",
+ "44 ADULT-GERONTOLOGY ASSESSMENT LAB 465 \n",
+ "45 PEDIATRIC ASSESSMENT LAB 474 \n",
+ "46 PEDIATRIC ASSESSMENT LAB 416 \n",
+ "47 ADULT-GERONTOLOGY ASSESSMENT LAB 428 \n",
+ "48 APPLIED PROBABILITY AND STOCHASTIC PROCESSES 001 \n",
+ "49 PEDIATRIC ASSESSMENT LAB 423 \n",
+ "\n",
+ " Instructor \n",
+ "0 A Elliott \n",
+ "1 Aaron Smallwood \n",
+ "2 Abdolhossein Haji-Sheikh \n",
+ "3 Abdul Rasheed \n",
+ "4 Abdul Rasheed \n",
+ "5 Adam Annaccone \n",
+ "6 Adam Annaccone \n",
+ "7 Adam Annaccone \n",
+ "8 Aditi Prabhakar \n",
+ "9 Aera LeBoulluec \n",
+ "10 Aimee Dunnam \n",
+ "11 Aimee Dunnam \n",
+ "12 Aimee Dunnam \n",
+ "13 Aimee Dunnam \n",
+ "14 Aimee Israel-Pelletier \n",
+ "15 Albert Tong \n",
+ "16 Albert Tong \n",
+ "17 Albert Tong \n",
+ "18 Albert Tong \n",
+ "19 Alejandro Rodriguez \n",
+ "20 Alejandro Rodriguez \n",
+ "21 Ali Reza Sayah \n",
+ "22 Allison Sullivan \n",
+ "23 Allison Tomlinson \n",
+ "24 Allison Tomlinson \n",
+ "25 Allison Tomlinson \n",
+ "26 Allison Tomlinson \n",
+ "27 Allison Tuppeny \n",
+ "28 Allison Tuppeny \n",
+ "29 Alper Nakkas \n",
+ "30 Amanda Aman \n",
+ "31 Amanda Aykanian \n",
+ "32 Amanda Mendez \n",
+ "33 Amanda Olsen \n",
+ "34 Amanda Olsen \n",
+ "35 Amanda Olsen \n",
+ "36 Amber Arnold \n",
+ "37 Amber Arnold \n",
+ "38 Amber Schroeder \n",
+ "39 Amy Anderson \n",
+ "40 Amy Anderson \n",
+ "41 Amy Anderson \n",
+ "42 Amy Archambeau \n",
+ "43 Amy Hinz Horn \n",
+ "44 Amy Lunsford \n",
+ "45 Amy Winslow \n",
+ "46 Amy Winslow \n",
+ "47 Ana Herrera \n",
+ "48 Andrzej Korzeniowski \n",
+ "49 Angela Miller "
+ ]
+ },
+ "execution_count": 14,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "instructors_for_classes.head(50)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "id": "3df9f2cb",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "{'CE 1000': [],\n",
+ " 'CE 1252': [['Amit Pokharel', array([], shape=(0, 7), dtype=object)],\n",
+ " ['Babak Alizadeh',\n",
+ " array([['2587962', 'Babak Alizadeh',\n",
+ " 'https://www.ratemyprofessors.com/professor/2587962', '4.5', '3',\n",
+ " '26',\n",
+ " 'Group projects, Accessible outside class, Gives good feedback, Respected, Clear grading criteria']],\n",
+ " dtype=object)],\n",
+ " ['Mohd Mezanur Rahman', array([], shape=(0, 7), dtype=object)],\n",
+ " ['Kawalpreet Kaur',\n",
+ " array([['2801232', 'Kawalpreet Kaur',\n",
+ " 'https://www.ratemyprofessors.com/professor/2801232', '5', '2',\n",
+ " '1', 'Caring, Gives good feedback, Participation matters']],\n",
+ " dtype=object)],\n",
+ " ['Sunakshi Hada', array([], shape=(0, 7), dtype=object)]],\n",
+ " 'CE 2000': [],\n",
+ " 'CE 2152': [],\n",
+ " 'CE 2191': [],\n",
+ " 'CE 2291': [],\n",
+ " 'CE 2312': [['George Agoki',\n",
+ " array([['2488791', 'George Agoki',\n",
+ " 'https://www.ratemyprofessors.com/professor/2488791', '1.6',\n",
+ " '2.7', '8',\n",
+ " 'Graded by few things, Lots of homework, Tough grader, Hilarious, Clear grading criteria']],\n",
+ " dtype=object)],\n",
+ " ['Seyed Missagh Shamshiri Guilvayi', array([], shape=(0, 7), dtype=object)],\n",
+ " ['Raad Azzawi',\n",
+ " array([['2070852', 'Raad Azzawi',\n",
+ " 'https://www.ratemyprofessors.com/professor/2070852', '3.9',\n",
+ " '3.1', '21',\n",
+ " 'Group projects, Inspirational, Caring, Amazing lectures, Tough grader']],\n",
+ " dtype=object)]],\n",
+ " 'CE 2391': [],\n",
+ " 'CE 3000': [],\n",
+ " 'CE 3131': [['Hyeok Choi',\n",
+ " array([['2885393', 'Hyeok Choi',\n",
+ " 'https://www.ratemyprofessors.com/professor/2885393', '2.7',\n",
+ " '3.3', '3',\n",
+ " 'So many papers, Tough grader, Participation matters']],\n",
+ " dtype=object)]],\n",
+ " 'CE 3143': [['Faria Fahim Badhon', array([], shape=(0, 7), dtype=object)],\n",
+ " ['Md Azijul Islam',\n",
+ " array([['2958205', 'Md Azijul Islam',\n",
+ " 'https://www.ratemyprofessors.com/professor/2958205', '4', '2',\n",
+ " '1', 'Lecture heavy, Caring, Respected']], dtype=object)],\n",
+ " ['Md Shams Razi Shopnil', array([], shape=(0, 7), dtype=object)],\n",
+ " ['Niloy Gupta', array([], shape=(0, 7), dtype=object)],\n",
+ " ['Tahsina Islam', array([], shape=(0, 7), dtype=object)],\n",
+ " ['Tanvir Imtiaz', array([], shape=(0, 7), dtype=object)],\n",
+ " ['Gang Lei', array([], shape=(0, 7), dtype=object)],\n",
+ " ['Md Hossain',\n",
+ " array([['1259737', 'Md Hossain',\n",
+ " 'https://www.ratemyprofessors.com/professor/1259737', '2.7',\n",
+ " '3.9', '15',\n",
+ " 'Tough Grader, Test Heavy, Amazing Lectures, Hilarious, Lecture Heavy']],\n",
+ " dtype=object)]],\n",
+ " 'CE 3300': [],\n",
+ " 'IE 3301': [['Aera LeBoulluec',\n",
+ " array([['2260609', 'Aera LeBoulluec',\n",
+ " 'https://www.ratemyprofessors.com/professor/2260609', '2.1',\n",
+ " '2.9', '35',\n",
+ " 'Get ready to read, Lots of homework, Lecture heavy, EXTRA CREDIT, Participation matters']],\n",
+ " dtype=object)],\n",
+ " ['Sheik Imrhan',\n",
+ " array([['890850', 'Sheik Imrhan',\n",
+ " 'https://www.ratemyprofessors.com/professor/890850', '1.5',\n",
+ " '4.6', '38',\n",
+ " \"Tough grader, Lecture heavy, Test heavy, Skip class? You won't pass., Get ready to read\"]],\n",
+ " dtype=object)],\n",
+ " ['Victoria Chen',\n",
+ " array([['1011470', 'Victoria Chen',\n",
+ " 'https://www.ratemyprofessors.com/professor/1011470', '3.3',\n",
+ " '3.8', '22',\n",
+ " 'Tough grader, Lots of homework, Clear grading criteria, Gives good feedback, Amazing lectures']],\n",
+ " dtype=object)],\n",
+ " ['Yasaman Ghasemi',\n",
+ " array([['2639003', 'Yasaman Ghasemi',\n",
+ " 'https://www.ratemyprofessors.com/professor/2639003', '5', '3',\n",
+ " '1', 'Accessible outside class, Caring, Clear grading criteria']],\n",
+ " dtype=object)],\n",
+ " ['Yiran Yang',\n",
+ " array([['2510416', 'Yiran Yang',\n",
+ " 'https://www.ratemyprofessors.com/professor/2510416', '5', '2.2',\n",
+ " '14',\n",
+ " 'Amazing lectures, Lots of homework, Clear grading criteria, EXTRA CREDIT, Caring']],\n",
+ " dtype=object)],\n",
+ " ['Erick Jones',\n",
+ " array([['1886306', 'Erick Jones',\n",
+ " 'https://www.ratemyprofessors.com/professor/1886306', '1.1',\n",
+ " '3.5', '4',\n",
+ " \"Group projects, So many papers, Skip class? You won't pass., Lots of homework\"]],\n",
+ " dtype=object)],\n",
+ " ['Rosie Kallie',\n",
+ " array([['2054234', 'Rosie Kallie',\n",
+ " 'https://www.ratemyprofessors.com/professor/2054234', '2.6',\n",
+ " '3.8', '72',\n",
+ " \"Tough grader, Skip class? You won't pass., Participation matters, Lots of homework, Group projects\"]],\n",
+ " dtype=object)],\n",
+ " ['Shouyi Wang',\n",
+ " array([['1854496', 'Shouyi Wang',\n",
+ " 'https://www.ratemyprofessors.com/professor/1854496', '4.8',\n",
+ " '2.4', '9',\n",
+ " 'Caring, Accessible outside class, Clear grading criteria, Respected']],\n",
+ " dtype=object)],\n",
+ " ['Khan MD Haque',\n",
+ " array([['2561452', 'Khan MD Haque',\n",
+ " 'https://www.ratemyprofessors.com/professor/2561452', '2.1',\n",
+ " '3.7', '9',\n",
+ " 'Lots of homework, Accessible outside class, Tough grader, Lecture heavy, EXTRA CREDIT']],\n",
+ " dtype=object)],\n",
+ " ['Sowmya Rao',\n",
+ " array([['2941409', 'Sowmya Rao',\n",
+ " 'https://www.ratemyprofessors.com/professor/2941409', '1', '5',\n",
+ " '3',\n",
+ " 'Graded by few things, Tough grader, Get ready to read, Lots of homework, Test heavy']],\n",
+ " dtype=object)],\n",
+ " ['Xin Liu',\n",
+ " array([['2700351', 'Xin Liu',\n",
+ " 'https://www.ratemyprofessors.com/professor/2700351', '3.8', '3',\n",
+ " '5',\n",
+ " 'Lots of homework, Accessible outside class, Lecture heavy, Clear grading criteria, Gives good feedback']],\n",
+ " dtype=object)],\n",
+ " ['Obiageli Lawrentia Ngwu',\n",
+ " array([['2971765', 'Obiageli Lawrentia Ngwu',\n",
+ " 'https://www.ratemyprofessors.com/professor/2971765', '2.3',\n",
+ " '2.3', '3',\n",
+ " 'Clear grading criteria, Lots of homework, Accessible outside class, Caring']],\n",
+ " dtype=object)],\n",
+ " ['Ukesh Chawal',\n",
+ " array([['2711981', 'Ukesh Chawal',\n",
+ " 'https://www.ratemyprofessors.com/professor/2711981', '4.8',\n",
+ " '2.6', '26',\n",
+ " 'Caring, EXTRA CREDIT, Amazing lectures, Respected, Clear grading criteria']],\n",
+ " dtype=object)]],\n",
+ " 'MATH 1324': [],\n",
+ " 'CE 3334': [['Naomi Gevaerd De Souza', array([], shape=(0, 7), dtype=object)],\n",
+ " ['Srinivas Prabakar',\n",
+ " array([['1912904', 'Srinivas Prabakar',\n",
+ " 'https://www.ratemyprofessors.com/professor/1912904', '4.4',\n",
+ " '3.6', '13',\n",
+ " 'Accessible outside class, Lecture heavy, Caring, EXTRA CREDIT, Participation matters']],\n",
+ " dtype=object)],\n",
+ " ['Hyeok Choi',\n",
+ " array([['2885393', 'Hyeok Choi',\n",
+ " 'https://www.ratemyprofessors.com/professor/2885393', '2.7',\n",
+ " '3.3', '3',\n",
+ " 'So many papers, Tough grader, Participation matters']],\n",
+ " dtype=object)]],\n",
+ " 'CE 3341': [['Suyun Ham',\n",
+ " array([['2388948', 'Suyun Ham',\n",
+ " 'https://www.ratemyprofessors.com/professor/2388948', '3.5',\n",
+ " '3.5', '13',\n",
+ " 'Tough grader, Beware of pop quizzes, Caring, Lecture heavy, Amazing lectures']],\n",
+ " dtype=object)],\n",
+ " ['Raad Azzawi',\n",
+ " array([['2070852', 'Raad Azzawi',\n",
+ " 'https://www.ratemyprofessors.com/professor/2070852', '3.9',\n",
+ " '3.1', '21',\n",
+ " 'Group projects, Inspirational, Caring, Amazing lectures, Tough grader']],\n",
+ " dtype=object)],\n",
+ " ['Panagiotis Danoglidis',\n",
+ " array([['2747965', 'Panagiotis Danoglidis',\n",
+ " 'https://www.ratemyprofessors.com/professor/2747965', '4', '2',\n",
+ " '3',\n",
+ " 'Accessible outside class, Amazing lectures, Gives good feedback, Clear grading criteria, Lots of homework']],\n",
+ " dtype=object)]],\n",
+ " 'CE 3342': [['Habib Ahmari',\n",
+ " array([['2091942', 'Habib Ahmari',\n",
+ " 'https://www.ratemyprofessors.com/professor/2091942', '3.3',\n",
+ " '4.4', '14',\n",
+ " \"Test heavy, Lots of homework, Skip class? You won't pass., Caring, Tough grader\"]],\n",
+ " dtype=object)],\n",
+ " ['Michelle Hummel', array([], shape=(0, 7), dtype=object)],\n",
+ " ['Babak Alizadeh',\n",
+ " array([['2587962', 'Babak Alizadeh',\n",
+ " 'https://www.ratemyprofessors.com/professor/2587962', '4.5', '3',\n",
+ " '26',\n",
+ " 'Group projects, Accessible outside class, Gives good feedback, Respected, Clear grading criteria']],\n",
+ " dtype=object)],\n",
+ " ['Kathleen Smits', array([], shape=(0, 7), dtype=object)],\n",
+ " ['Jessica Eisma',\n",
+ " array([['2700719', 'Jessica Eisma',\n",
+ " 'https://www.ratemyprofessors.com/professor/2700719', '2.1',\n",
+ " '4.3', '23',\n",
+ " 'Test heavy, Accessible outside class, Tough grader, Clear grading criteria, Lots of homework']],\n",
+ " dtype=object)]],\n",
+ " 'CE 3343': [['Xinbao Yu',\n",
+ " array([['2940833', 'Xinbao Yu',\n",
+ " 'https://www.ratemyprofessors.com/professor/2940833', '2', '4.7',\n",
+ " '3',\n",
+ " 'Lecture heavy, Caring, Tough grader, Accessible outside class, Respected']],\n",
+ " dtype=object)],\n",
+ " ['Laureano Hoyos',\n",
+ " array([['2504535', 'Laureano Hoyos',\n",
+ " 'https://www.ratemyprofessors.com/professor/2504535', '3.4',\n",
+ " '3.1', '9',\n",
+ " 'Test heavy, Lots of homework, Graded by few things, Tough grader, Lecture heavy']],\n",
+ " dtype=object)],\n",
+ " ['Md Hossain',\n",
+ " array([['1259737', 'Md Hossain',\n",
+ " 'https://www.ratemyprofessors.com/professor/1259737', '2.7',\n",
+ " '3.9', '15',\n",
+ " 'Tough Grader, Test Heavy, Amazing Lectures, Hilarious, Lecture Heavy']],\n",
+ " dtype=object)]],\n",
+ " 'CE 4000': [],\n",
+ " 'CE 4191': [],\n",
+ " 'CE 4291': [],\n",
+ " 'CE 4300': [['Kathleen Smits', array([], shape=(0, 7), dtype=object)],\n",
+ " ['Melanie Sattler', array([], shape=(0, 7), dtype=object)]],\n",
+ " 'CE 4301': [],\n",
+ " 'CE 4303': [['Nilo Tsung',\n",
+ " array([['2546336', 'Nilo Tsung',\n",
+ " 'https://www.ratemyprofessors.com/professor/2546336', '1.2', '4',\n",
+ " '5',\n",
+ " \"Get ready to read, Skip class? You won't pass., Beware of pop quizzes, Tough grader, Lecture heavy\"]],\n",
+ " dtype=object)]],\n",
+ " 'CE 4304': [['Michael Fairchild', array([], shape=(0, 7), dtype=object)],\n",
+ " ['Vinayak Kaushal',\n",
+ " array([['2712950', 'Vinayak Kaushal',\n",
+ " 'https://www.ratemyprofessors.com/professor/2712950', '4', '2.4',\n",
+ " '8',\n",
+ " 'Caring, Get ready to read, Accessible outside class, Gives good feedback, Respected']],\n",
+ " dtype=object)],\n",
+ " ['Zhe Yin',\n",
+ " array([['2861242', 'Zhe Yin',\n",
+ " 'https://www.ratemyprofessors.com/professor/2861242', '4', '2.4',\n",
+ " '7',\n",
+ " 'Tough grader, Beware of pop quizzes, Lecture heavy, Amazing lectures, Hilarious']],\n",
+ " dtype=object)],\n",
+ " ['Tamer Eljufout',\n",
+ " array([['2935601', 'Tamer Eljufout',\n",
+ " 'https://www.ratemyprofessors.com/professor/2935601', '2.3',\n",
+ " '3.2', '6',\n",
+ " 'Gives good feedback, EXTRA CREDIT, Tough grader, Lecture heavy, Accessible outside class']],\n",
+ " dtype=object)],\n",
+ " ['Ahmad Kamal Bani Hani', array([], shape=(0, 7), dtype=object)]],\n",
+ " 'CE 4305': [['Mohammad Najafi',\n",
+ " array([['2081531', 'Mohammad Najafi',\n",
+ " 'https://www.ratemyprofessors.com/professor/2081531', '1.7',\n",
+ " '4.2', '6',\n",
+ " 'Would take again, Group projects, Lots of homework, Tough grader, Gives good feedback']],\n",
+ " dtype=object)]],\n",
+ " 'CE 4306': [],\n",
+ " 'CE 4307': [['Arpita Bhatt',\n",
+ " array([['2406176', 'Arpita Bhatt',\n",
+ " 'https://www.ratemyprofessors.com/professor/2406176', '3.1',\n",
+ " '2.9', '14',\n",
+ " 'Group projects, Lots of homework, Beware of pop quizzes, Lecture heavy, Clear grading criteria']],\n",
+ " dtype=object)]],\n",
+ " 'CE 4310': [['Stephen Mattingly',\n",
+ " array([['2504529', 'Stephen Mattingly',\n",
+ " 'https://www.ratemyprofessors.com/professor/2504529', '3.3',\n",
+ " '3.3', '3',\n",
+ " 'Group projects, Lots of homework, Amazing lectures, Tough grader, Gives good feedback']],\n",
+ " dtype=object)]],\n",
+ " 'CE 4311': [['Kyung Hyun',\n",
+ " array([['2377191', 'Kyung Hyun',\n",
+ " 'https://www.ratemyprofessors.com/professor/2377191', '3.7',\n",
+ " '3.7', '6',\n",
+ " 'Get ready to read, Group projects, Accessible outside class, Caring, Tough grader']],\n",
+ " dtype=object)],\n",
+ " ['Saeed Reza Ramezanpour Nargesi',\n",
+ " array([['2556915', 'Saeed Reza Ramezanpour Nargesi',\n",
+ " 'https://www.ratemyprofessors.com/professor/2556915', '2.8',\n",
+ " '3.3', '32',\n",
+ " 'Tough grader, Test heavy, Caring, Clear grading criteria, Lecture heavy']],\n",
+ " dtype=object)]],\n",
+ " 'CE 4312': [['Sina Famili', array([], shape=(0, 7), dtype=object)],\n",
+ " ['Nelson Gomez-Torres',\n",
+ " array([['2750091', 'Nelson Gomez-Torres',\n",
+ " 'https://www.ratemyprofessors.com/professor/2750091', '1.9',\n",
+ " '4.1', '21',\n",
+ " 'Test heavy, Graded by few things, Tough grader, Lecture heavy, Participation matters']],\n",
+ " dtype=object)]],\n",
+ " 'CE 4313': [['Pengfei Li', array([], shape=(0, 7), dtype=object)]],\n",
+ " 'CE 4314': [],\n",
+ " 'CE 4318': [],\n",
+ " 'CE 4319': [],\n",
+ " 'CE 4324': [['Himan Hojat Jalali',\n",
+ " array([['2146877', 'Himan Hojat Jalali',\n",
+ " 'https://www.ratemyprofessors.com/professor/2146877', '4.6',\n",
+ " '3.1', '16',\n",
+ " 'Lots of homework, Accessible outside class, Amazing lectures, Respected, Gives good feedback']],\n",
+ " dtype=object)]],\n",
+ " 'CE 4332': [['Mohammad Najafi',\n",
+ " array([['2081531', 'Mohammad Najafi',\n",
+ " 'https://www.ratemyprofessors.com/professor/2081531', '1.7',\n",
+ " '4.2', '6',\n",
+ " 'Would take again, Group projects, Lots of homework, Tough grader, Gives good feedback']],\n",
+ " dtype=object)],\n",
+ " ['Vinayak Kaushal',\n",
+ " array([['2712950', 'Vinayak Kaushal',\n",
+ " 'https://www.ratemyprofessors.com/professor/2712950', '4', '2.4',\n",
+ " '8',\n",
+ " 'Caring, Get ready to read, Accessible outside class, Gives good feedback, Respected']],\n",
+ " dtype=object)]],\n",
+ " 'CE 4334': [],\n",
+ " 'CE 4352': [['Ernest Crosby',\n",
+ " array([['1897335', 'Ernest Crosby',\n",
+ " 'https://www.ratemyprofessors.com/professor/1897335', '1.6',\n",
+ " '3.1', '7',\n",
+ " 'Group projects, Lots of homework, Respected, Tests? Not many, Inspirational']],\n",
+ " dtype=object)],\n",
+ " ['Nelson Gomez-Torres',\n",
+ " array([['2750091', 'Nelson Gomez-Torres',\n",
+ " 'https://www.ratemyprofessors.com/professor/2750091', '1.9',\n",
+ " '4.1', '21',\n",
+ " 'Test heavy, Graded by few things, Tough grader, Lecture heavy, Participation matters']],\n",
+ " dtype=object)]],\n",
+ " 'CE 4391': [],\n",
+ " 'CE 4395': []}"
+ ]
+ },
+ "execution_count": 15,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "id = instructors_for_classes[\"Subject ID\"] + \" \" + instructors_for_classes[\"Course Number\"]\n",
+ "professors_for_class = {}\n",
+ "\n",
+ "for i in range(len(available)):\n",
+ " course_num = available[\"Course Num\"][i]\n",
+ " professors_for_class[course_num] = [] # Initialize with empty list, not [[]]\n",
+ " \n",
+ " for j in range(len(instructors_for_classes)):\n",
+ " if course_num == id[j]:\n",
+ " instructor = instructors_for_classes.iloc[j][\"Instructor\"]\n",
+ " \n",
+ " # Check if instructor already added\n",
+ " if instructor not in [prof[0] for prof in professors_for_class[course_num]]:\n",
+ " # Get rating as scalar value\n",
+ " rating_df = ratings_for_prof[ratings_for_prof[\"Name\"] == instructor]\n",
+ " # print(rating_df)\n",
+ " # Append as list pair\n",
+ " professors_for_class[course_num].append([instructor, rating_df.values])\n",
+ "\n",
+ "professors_for_class\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 33,
+ "id": "018ef148",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def numpy_converter(obj):\n",
+ " if isinstance(obj, np.ndarray):\n",
+ " return obj.tolist()\n",
+ " raise TypeError(f\"Object of type {type(obj)} is not JSON serializable\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 34,
+ "id": "1941ae4d",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import json\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 35,
+ "id": "8c46c076",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "{\"CE 1000\": [], \"CE 1252\": [[\"Amit Pokharel\", []], [\"Babak Alizadeh\", [[\"2587962\", \"Babak Alizadeh\", \"https://www.ratemyprofessors.com/professor/2587962\", \"4.5\", \"3\", \"26\", \"Group projects, Accessible outside class, Gives good feedback, Respected, Clear grading criteria\"]]], [\"Mohd Mezanur Rahman\", []], [\"Kawalpreet Kaur\", [[\"2801232\", \"Kawalpreet Kaur\", \"https://www.ratemyprofessors.com/professor/2801232\", \"5\", \"2\", \"1\", \"Caring, Gives good feedback, Participation matters\"]]], [\"Sunakshi Hada\", []]], \"CE 2000\": [], \"CE 2152\": [], \"CE 2191\": [], \"CE 2291\": [], \"CE 2312\": [[\"George Agoki\", [[\"2488791\", \"George Agoki\", \"https://www.ratemyprofessors.com/professor/2488791\", \"1.6\", \"2.7\", \"8\", \"Graded by few things, Lots of homework, Tough grader, Hilarious, Clear grading criteria\"]]], [\"Seyed Missagh Shamshiri Guilvayi\", []], [\"Raad Azzawi\", [[\"2070852\", \"Raad Azzawi\", \"https://www.ratemyprofessors.com/professor/2070852\", \"3.9\", \"3.1\", \"21\", \"Group projects, Inspirational, Caring, Amazing lectures, Tough grader\"]]]], \"CE 2391\": [], \"CE 3000\": [], \"CE 3131\": [[\"Hyeok Choi\", [[\"2885393\", \"Hyeok Choi\", \"https://www.ratemyprofessors.com/professor/2885393\", \"2.7\", \"3.3\", \"3\", \"So many papers, Tough grader, Participation matters\"]]]], \"CE 3143\": [[\"Faria Fahim Badhon\", []], [\"Md Azijul Islam\", [[\"2958205\", \"Md Azijul Islam\", \"https://www.ratemyprofessors.com/professor/2958205\", \"4\", \"2\", \"1\", \"Lecture heavy, Caring, Respected\"]]], [\"Md Shams Razi Shopnil\", []], [\"Niloy Gupta\", []], [\"Tahsina Islam\", []], [\"Tanvir Imtiaz\", []], [\"Gang Lei\", []], [\"Md Hossain\", [[\"1259737\", \"Md Hossain\", \"https://www.ratemyprofessors.com/professor/1259737\", \"2.7\", \"3.9\", \"15\", \"Tough Grader, Test Heavy, Amazing Lectures, Hilarious, Lecture Heavy\"]]]], \"CE 3300\": [], \"IE 3301\": [[\"Aera LeBoulluec\", [[\"2260609\", \"Aera LeBoulluec\", \"https://www.ratemyprofessors.com/professor/2260609\", \"2.1\", \"2.9\", \"35\", \"Get ready to read, Lots of homework, Lecture heavy, EXTRA CREDIT, Participation matters\"]]], [\"Sheik Imrhan\", [[\"890850\", \"Sheik Imrhan\", \"https://www.ratemyprofessors.com/professor/890850\", \"1.5\", \"4.6\", \"38\", \"Tough grader, Lecture heavy, Test heavy, Skip class? You won't pass., Get ready to read\"]]], [\"Victoria Chen\", [[\"1011470\", \"Victoria Chen\", \"https://www.ratemyprofessors.com/professor/1011470\", \"3.3\", \"3.8\", \"22\", \"Tough grader, Lots of homework, Clear grading criteria, Gives good feedback, Amazing lectures\"]]], [\"Yasaman Ghasemi\", [[\"2639003\", \"Yasaman Ghasemi\", \"https://www.ratemyprofessors.com/professor/2639003\", \"5\", \"3\", \"1\", \"Accessible outside class, Caring, Clear grading criteria\"]]], [\"Yiran Yang\", [[\"2510416\", \"Yiran Yang\", \"https://www.ratemyprofessors.com/professor/2510416\", \"5\", \"2.2\", \"14\", \"Amazing lectures, Lots of homework, Clear grading criteria, EXTRA CREDIT, Caring\"]]], [\"Erick Jones\", [[\"1886306\", \"Erick Jones\", \"https://www.ratemyprofessors.com/professor/1886306\", \"1.1\", \"3.5\", \"4\", \"Group projects, So many papers, Skip class? You won't pass., Lots of homework\"]]], [\"Rosie Kallie\", [[\"2054234\", \"Rosie Kallie\", \"https://www.ratemyprofessors.com/professor/2054234\", \"2.6\", \"3.8\", \"72\", \"Tough grader, Skip class? You won't pass., Participation matters, Lots of homework, Group projects\"]]], [\"Shouyi Wang\", [[\"1854496\", \"Shouyi Wang\", \"https://www.ratemyprofessors.com/professor/1854496\", \"4.8\", \"2.4\", \"9\", \"Caring, Accessible outside class, Clear grading criteria, Respected\"]]], [\"Khan MD Haque\", [[\"2561452\", \"Khan MD Haque\", \"https://www.ratemyprofessors.com/professor/2561452\", \"2.1\", \"3.7\", \"9\", \"Lots of homework, Accessible outside class, Tough grader, Lecture heavy, EXTRA CREDIT\"]]], [\"Sowmya Rao\", [[\"2941409\", \"Sowmya Rao\", \"https://www.ratemyprofessors.com/professor/2941409\", \"1\", \"5\", \"3\", \"Graded by few things, Tough grader, Get ready to read, Lots of homework, Test heavy\"]]], [\"Xin Liu\", [[\"2700351\", \"Xin Liu\", \"https://www.ratemyprofessors.com/professor/2700351\", \"3.8\", \"3\", \"5\", \"Lots of homework, Accessible outside class, Lecture heavy, Clear grading criteria, Gives good feedback\"]]], [\"Obiageli Lawrentia Ngwu\", [[\"2971765\", \"Obiageli Lawrentia Ngwu\", \"https://www.ratemyprofessors.com/professor/2971765\", \"2.3\", \"2.3\", \"3\", \"Clear grading criteria, Lots of homework, Accessible outside class, Caring\"]]], [\"Ukesh Chawal\", [[\"2711981\", \"Ukesh Chawal\", \"https://www.ratemyprofessors.com/professor/2711981\", \"4.8\", \"2.6\", \"26\", \"Caring, EXTRA CREDIT, Amazing lectures, Respected, Clear grading criteria\"]]]], \"MATH 1324\": [], \"CE 3334\": [[\"Naomi Gevaerd De Souza\", []], [\"Srinivas Prabakar\", [[\"1912904\", \"Srinivas Prabakar\", \"https://www.ratemyprofessors.com/professor/1912904\", \"4.4\", \"3.6\", \"13\", \"Accessible outside class, Lecture heavy, Caring, EXTRA CREDIT, Participation matters\"]]], [\"Hyeok Choi\", [[\"2885393\", \"Hyeok Choi\", \"https://www.ratemyprofessors.com/professor/2885393\", \"2.7\", \"3.3\", \"3\", \"So many papers, Tough grader, Participation matters\"]]]], \"CE 3341\": [[\"Suyun Ham\", [[\"2388948\", \"Suyun Ham\", \"https://www.ratemyprofessors.com/professor/2388948\", \"3.5\", \"3.5\", \"13\", \"Tough grader, Beware of pop quizzes, Caring, Lecture heavy, Amazing lectures\"]]], [\"Raad Azzawi\", [[\"2070852\", \"Raad Azzawi\", \"https://www.ratemyprofessors.com/professor/2070852\", \"3.9\", \"3.1\", \"21\", \"Group projects, Inspirational, Caring, Amazing lectures, Tough grader\"]]], [\"Panagiotis Danoglidis\", [[\"2747965\", \"Panagiotis Danoglidis\", \"https://www.ratemyprofessors.com/professor/2747965\", \"4\", \"2\", \"3\", \"Accessible outside class, Amazing lectures, Gives good feedback, Clear grading criteria, Lots of homework\"]]]], \"CE 3342\": [[\"Habib Ahmari\", [[\"2091942\", \"Habib Ahmari\", \"https://www.ratemyprofessors.com/professor/2091942\", \"3.3\", \"4.4\", \"14\", \"Test heavy, Lots of homework, Skip class? You won't pass., Caring, Tough grader\"]]], [\"Michelle Hummel\", []], [\"Babak Alizadeh\", [[\"2587962\", \"Babak Alizadeh\", \"https://www.ratemyprofessors.com/professor/2587962\", \"4.5\", \"3\", \"26\", \"Group projects, Accessible outside class, Gives good feedback, Respected, Clear grading criteria\"]]], [\"Kathleen Smits\", []], [\"Jessica Eisma\", [[\"2700719\", \"Jessica Eisma\", \"https://www.ratemyprofessors.com/professor/2700719\", \"2.1\", \"4.3\", \"23\", \"Test heavy, Accessible outside class, Tough grader, Clear grading criteria, Lots of homework\"]]]], \"CE 3343\": [[\"Xinbao Yu\", [[\"2940833\", \"Xinbao Yu\", \"https://www.ratemyprofessors.com/professor/2940833\", \"2\", \"4.7\", \"3\", \"Lecture heavy, Caring, Tough grader, Accessible outside class, Respected\"]]], [\"Laureano Hoyos\", [[\"2504535\", \"Laureano Hoyos\", \"https://www.ratemyprofessors.com/professor/2504535\", \"3.4\", \"3.1\", \"9\", \"Test heavy, Lots of homework, Graded by few things, Tough grader, Lecture heavy\"]]], [\"Md Hossain\", [[\"1259737\", \"Md Hossain\", \"https://www.ratemyprofessors.com/professor/1259737\", \"2.7\", \"3.9\", \"15\", \"Tough Grader, Test Heavy, Amazing Lectures, Hilarious, Lecture Heavy\"]]]], \"CE 4000\": [], \"CE 4191\": [], \"CE 4291\": [], \"CE 4300\": [[\"Kathleen Smits\", []], [\"Melanie Sattler\", []]], \"CE 4301\": [], \"CE 4303\": [[\"Nilo Tsung\", [[\"2546336\", \"Nilo Tsung\", \"https://www.ratemyprofessors.com/professor/2546336\", \"1.2\", \"4\", \"5\", \"Get ready to read, Skip class? You won't pass., Beware of pop quizzes, Tough grader, Lecture heavy\"]]]], \"CE 4304\": [[\"Michael Fairchild\", []], [\"Vinayak Kaushal\", [[\"2712950\", \"Vinayak Kaushal\", \"https://www.ratemyprofessors.com/professor/2712950\", \"4\", \"2.4\", \"8\", \"Caring, Get ready to read, Accessible outside class, Gives good feedback, Respected\"]]], [\"Zhe Yin\", [[\"2861242\", \"Zhe Yin\", \"https://www.ratemyprofessors.com/professor/2861242\", \"4\", \"2.4\", \"7\", \"Tough grader, Beware of pop quizzes, Lecture heavy, Amazing lectures, Hilarious\"]]], [\"Tamer Eljufout\", [[\"2935601\", \"Tamer Eljufout\", \"https://www.ratemyprofessors.com/professor/2935601\", \"2.3\", \"3.2\", \"6\", \"Gives good feedback, EXTRA CREDIT, Tough grader, Lecture heavy, Accessible outside class\"]]], [\"Ahmad Kamal Bani Hani\", []]], \"CE 4305\": [[\"Mohammad Najafi\", [[\"2081531\", \"Mohammad Najafi\", \"https://www.ratemyprofessors.com/professor/2081531\", \"1.7\", \"4.2\", \"6\", \"Would take again, Group projects, Lots of homework, Tough grader, Gives good feedback\"]]]], \"CE 4306\": [], \"CE 4307\": [[\"Arpita Bhatt\", [[\"2406176\", \"Arpita Bhatt\", \"https://www.ratemyprofessors.com/professor/2406176\", \"3.1\", \"2.9\", \"14\", \"Group projects, Lots of homework, Beware of pop quizzes, Lecture heavy, Clear grading criteria\"]]]], \"CE 4310\": [[\"Stephen Mattingly\", [[\"2504529\", \"Stephen Mattingly\", \"https://www.ratemyprofessors.com/professor/2504529\", \"3.3\", \"3.3\", \"3\", \"Group projects, Lots of homework, Amazing lectures, Tough grader, Gives good feedback\"]]]], \"CE 4311\": [[\"Kyung Hyun\", [[\"2377191\", \"Kyung Hyun\", \"https://www.ratemyprofessors.com/professor/2377191\", \"3.7\", \"3.7\", \"6\", \"Get ready to read, Group projects, Accessible outside class, Caring, Tough grader\"]]], [\"Saeed Reza Ramezanpour Nargesi\", [[\"2556915\", \"Saeed Reza Ramezanpour Nargesi\", \"https://www.ratemyprofessors.com/professor/2556915\", \"2.8\", \"3.3\", \"32\", \"Tough grader, Test heavy, Caring, Clear grading criteria, Lecture heavy\"]]]], \"CE 4312\": [[\"Sina Famili\", []], [\"Nelson Gomez-Torres\", [[\"2750091\", \"Nelson Gomez-Torres\", \"https://www.ratemyprofessors.com/professor/2750091\", \"1.9\", \"4.1\", \"21\", \"Test heavy, Graded by few things, Tough grader, Lecture heavy, Participation matters\"]]]], \"CE 4313\": [[\"Pengfei Li\", []]], \"CE 4314\": [], \"CE 4318\": [], \"CE 4319\": [], \"CE 4324\": [[\"Himan Hojat Jalali\", [[\"2146877\", \"Himan Hojat Jalali\", \"https://www.ratemyprofessors.com/professor/2146877\", \"4.6\", \"3.1\", \"16\", \"Lots of homework, Accessible outside class, Amazing lectures, Respected, Gives good feedback\"]]]], \"CE 4332\": [[\"Mohammad Najafi\", [[\"2081531\", \"Mohammad Najafi\", \"https://www.ratemyprofessors.com/professor/2081531\", \"1.7\", \"4.2\", \"6\", \"Would take again, Group projects, Lots of homework, Tough grader, Gives good feedback\"]]], [\"Vinayak Kaushal\", [[\"2712950\", \"Vinayak Kaushal\", \"https://www.ratemyprofessors.com/professor/2712950\", \"4\", \"2.4\", \"8\", \"Caring, Get ready to read, Accessible outside class, Gives good feedback, Respected\"]]]], \"CE 4334\": [], \"CE 4352\": [[\"Ernest Crosby\", [[\"1897335\", \"Ernest Crosby\", \"https://www.ratemyprofessors.com/professor/1897335\", \"1.6\", \"3.1\", \"7\", \"Group projects, Lots of homework, Respected, Tests? Not many, Inspirational\"]]], [\"Nelson Gomez-Torres\", [[\"2750091\", \"Nelson Gomez-Torres\", \"https://www.ratemyprofessors.com/professor/2750091\", \"1.9\", \"4.1\", \"21\", \"Test heavy, Graded by few things, Tough grader, Lecture heavy, Participation matters\"]]]], \"CE 4391\": [], \"CE 4395\": []}\n"
+ ]
+ }
+ ],
+ "source": [
+ "json_string = json.dumps(professors_for_class, default=numpy_converter)\n",
+ "\n",
+ "print(json_string)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "cf22185f",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": ".venv",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.12.3"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/server/app/scripts/algorithm.py b/server/app/scripts/algorithm.py
deleted file mode 100644
index 8d6e3406..00000000
--- a/server/app/scripts/algorithm.py
+++ /dev/null
@@ -1,11 +0,0 @@
-import pandas as pd
-import sqlite3
-department = "CE"
-db_path = "SmartAdvisors/data/classes.db"
-
-db = sqlite3.connect(db_path)
-cur = db.cursor()
-
-cur.execute(f"SELECT * FROM ClassesFor{department}")
-data = cur.fetchall()
-print(data)
diff --git a/server/app/scripts/parse_transcript.py b/server/app/scripts/parse_transcript.py
index 285f0ca7..cb31ff8c 100644
--- a/server/app/scripts/parse_transcript.py
+++ b/server/app/scripts/parse_transcript.py
@@ -110,4 +110,26 @@ def extract_all_courses(pdf_path: str) -> List[str]:
print(f"Error parsing PDF: {e}")
return []
- return sorted(list(found_courses_set))
\ No newline at end of file
+ unique_courses = sorted(list(found_courses_set))
+ return unique_courses
+
+# --- Main execution block ---
+if __name__ == "__main__":
+ if len(sys.argv) > 1:
+ transcript_pdf_path = sys.argv[1]
+ else:
+ transcript_pdf_path = "/Users/johna/Downloads/SSR_TSRPT_UN (20) (1).pdf"
+
+ extracted_courses = extract_all_courses(transcript_pdf_path)
+
+ if extracted_courses:
+ print("\n--- Found Courses ---")
+ for course in extracted_courses:
+ print(course)
+ print(f"\nTotal unique courses found: {len(extracted_courses)}")
+ else:
+ print("\nNo course codes could be extracted.")
+
+# if someone has a D, F, P, F, Q,W, R, I Z
+# also if you are a freshman, there might not be any grades attached to the courses
+# also if the user has no classes, there should be an option called i'm new to UTA and we just send them to select the professor and courses attributes
diff --git a/server/app/scripts/scraping.py b/server/app/scripts/scraping.py
index 87016118..42559b1a 100644
--- a/server/app/scripts/scraping.py
+++ b/server/app/scripts/scraping.py
@@ -1,12 +1,13 @@
+# Complete Web Scraper with OR Prerequisite Logic
+
from bs4 import BeautifulSoup
import requests
import re
import sqlite3
import spacy
-# --- New Code: Load spaCy Model Globally ---
-# This loads the model once when the script starts, which is much more efficient.
-# It will download the model if you don't have it installed.
+
+# --- Load spaCy Model Globally ---
try:
nlp = spacy.load("en_core_web_lg")
except OSError:
@@ -15,16 +16,53 @@
spacy.cli.download("en_core_web_lg")
nlp = spacy.load("en_core_web_lg")
+
# Regex to find course codes (e.g., CEE 1234, MATH 2425)
-# This is often more reliable than just spaCy's POS tagging for this specific format
COURSE_RE = re.compile(r'([A-Z]{2,4})\s(\d{4})')
-# --- New Code: Requisite Extraction Function ---
-# --- New Code: Requisite Extraction Function (Modified) ---
-# --- New Code: Requisite Extraction Function (State Machine) ---
+
+# --- NEW FUNCTION: Format Prerequisites with OR Logic ---
+def format_prerequisites_with_or_logic(prereqs_set, description_text):
+ """
+ Format prerequisites string, preserving OR relationships from description.
+
+ Returns: String like "CSE 2320, MATH 3133|IE 3301"
+ Where "|" indicates OR and "," indicates AND
+ """
+ if not prereqs_set:
+ return ""
+
+ # Look for "X #### or Y ####" patterns in the description
+ or_pattern = r'([A-Z]{2,4}\s+\d{4})\s+or\s+([A-Z]{2,4}\s+\d{4})'
+ or_matches = re.findall(or_pattern, description_text, re.IGNORECASE)
+
+ # Group OR courses together
+ or_groups = []
+ remaining = set(prereqs_set)
+
+ for match in or_matches:
+ course1 = match[0].strip()
+ course2 = match[1].strip()
+
+ # Normalize spaces
+ course1 = ' '.join(course1.split())
+ course2 = ' '.join(course2.split())
+
+ # If both courses are in the prerequisites, group them as OR
+ if course1 in remaining and course2 in remaining:
+ or_groups.append(f"{course1}|{course2}")
+ remaining.discard(course1)
+ remaining.discard(course2)
+
+ # Combine: remaining individual courses + OR groups
+ all_parts = list(remaining) + or_groups
+ return ', '.join(all_parts)
+
+
+# --- Requisite Extraction Function (State Machine) ---
def extract_requisites(description_text):
"""
- Uses spaCy to parse the *entire requisite block* (not just the last line)
+ Uses spaCy to parse the entire requisite block
and uses a state machine to categorize courses.
"""
prereqs = set()
@@ -71,11 +109,10 @@ def extract_requisites(description_text):
sent_text = sent.text.lower()
# Check for keywords to *change* the state
- # (This handles "Prerequisite... Corequisite...")
if "corequisite" in sent_text or "concurrent" in sent_text:
- current_mode = 1 # Now we are in coreq mode
+ current_mode = 1 # Now we are in coreq mode
elif "prerequisite" in sent_text:
- current_mode = 0 # Now we are in prereq mode
+ current_mode = 0 # Now we are in prereq mode
# Find all course codes in this sentence
found_codes = COURSE_RE.findall(sent.text)
@@ -92,18 +129,16 @@ def extract_requisites(description_text):
return {"prereqs": prereqs, "coreqs": coreqs}
+
def find_data(html_content):
"""
Find the (Course_Num, Course_Name) and (Prerequisites, Corequisites)
Returned as list_of_titles and list_of_reqs respectively
"""
- # print(html_content)
soup = BeautifulSoup(html_content, 'html.parser')
titles_of_courses = soup.find_all(class_="courseblocktitle")
- """
- Find the Course Numbers and Names of all Classes in the chosen department
- """
+ # Find the Course Numbers and Names of all Classes in the chosen department
list_of_titles = []
for i in titles_of_courses:
@@ -120,19 +155,15 @@ def find_data(html_content):
course_id = delimited_list[0].strip()
# Clean the course name
- # " Introduction to Programming (3-2) 3"
- # Strip whitespace and remove the credit hours at the end
course_name = re.sub(r'\s+\(.*\)\s*\d*$', '', delimited_list[1]).strip()
list_of_titles.append([course_id, course_name])
except (IndexError, ValueError):
- # Skip invalid formats (e.g., a title block without a period or number)
+ # Skip invalid formats
continue
- """
- Find the Pre-Requisites and Co-requisites of a Class
- """
+ # Find the Pre-Requisites and Co-requisites of a Class
list_of_reqs = []
list_of_desc = []
@@ -143,27 +174,17 @@ def find_data(html_content):
desc_text = desc_html.text
list_of_desc.append(desc_text)
- # --- Updated Code: Call the new spaCy function ---
+ # Call the spaCy function to extract requisites
reqs = extract_requisites(desc_text)
list_of_reqs.append(reqs)
-
- # TODO
- # IF THE Department from Prerequisite is not the same as the current department then grab the data for that department and add on the prerequisite
- # (This logic is complex and would require a recursive scraper)
return list_of_titles, list_of_reqs, list_of_desc
+
def find_prereqs(prerequisites, main_course_department, safe_table_name, cur):
"""
Recursively finds and inserts prerequisite courses from other departments.
-
- :param prerequisites: A set of prerequisite course IDs, e.g., {'MATH 1426', 'PHYS 1443'}
- :param main_course_department: The department of the course we're checking, e.g., "CE"
- :param safe_table_name: The name of the SQL table to insert into.
- :param cur: The active database cursor.
"""
-
- # Use the same INSERT OR REPLACE strategy as insert_courses
sql_insert = f"""
INSERT OR REPLACE INTO {safe_table_name}
(Course_Num, Course_Name, Pre_Requisites, Co_Requisites, Description)
@@ -175,34 +196,29 @@ def find_prereqs(prerequisites, main_course_department, safe_table_name, cur):
# Loop through each prerequisite course ID in the set
for prereq_course_id in prerequisites:
- # prereq_course_id is a string, e.g., "MATH 1426"
-
# Check if this prerequisite is in a different department
if main_course_department not in str(prereq_course_id):
try:
- prereq_dept = prereq_course_id.split(" ")[0] # e.g., "MATH"
+ prereq_dept = prereq_course_id.split(" ")[0] # e.g., "MATH"
- # --- VITAL CHECK: PREVENT INFINITE RECURSION ---
- # Check if we have *already* inserted this course.
+ # Check if we have already inserted this course
cur.execute(f"SELECT 1 FROM {safe_table_name} WHERE Course_Num = ?", (prereq_course_id,))
if cur.fetchone():
- # If it exists, we're done. Skip to the next prerequisite.
continue
- # --- We don't have it. Scrape the new department. ---
+ # We don't have it. Scrape the new department.
print(f"--- Finding prereq: {prereq_course_id} from {prereq_dept} department...")
html = get_html_content(prereq_dept)
if not html:
print(f"Warning: Could not fetch {prereq_dept}. Skipping {prereq_course_id}.")
- continue # Skip this prerequisite
+ continue
- # Parse the *entire* department page
+ # Parse the entire department page
new_titles, new_preqs, new_descs = find_data(html)
# Find the specific course we're looking for
found_course = False
for k in range(len(new_titles)):
-
clean_title_from_scrape = new_titles[k][0].replace('\u00A0', ' ').strip()
# If we find the matching course (e.g., "MATH 1426")
@@ -213,30 +229,32 @@ def find_prereqs(prerequisites, main_course_department, safe_table_name, cur):
prereqs_for_this_prereq_set = new_preqs[k]["prereqs"]
coreqs_for_this_prereq_set = new_preqs[k]["coreqs"]
- prereqs_str = ', '.join(prereqs_for_this_prereq_set)
+ # --- UPDATED: Use OR logic formatter ---
+ prereqs_str = format_prerequisites_with_or_logic(
+ prereqs_for_this_prereq_set,
+ new_descs[k]
+ )
coreqs_str = ', '.join(coreqs_for_this_prereq_set)
data_tuple_for_prereq = (
new_titles[k][0], # Course_Num
new_titles[k][1], # Course_Name
- prereqs_str, # Pre_Requisites
+ prereqs_str, # Pre_Requisites with OR logic
coreqs_str, # Co_Requisites
- str(new_descs[k]).strip() # Description
+ str(new_descs[k]).strip() # Description
)
- # --- 1. Insert this prerequisite course (e.g., "MATH 1426") ---
+ # Insert this prerequisite course
try:
cur.execute(sql_insert, data_tuple_for_prereq)
except Exception as e:
print(f"Error inserting prereq {data_tuple_for_prereq[0]}: {e}")
- # --- 2. NOW, recursively find *its* prerequisites ---
+ # Recursively find its prerequisites
all_prereqs_for_prereq = prereqs_for_this_prereq_set.union(coreqs_for_this_prereq_set)
if all_prereqs_for_prereq:
- # The 'department' for this recursive call is "MATH" (prereq_dept)
find_prereqs(all_prereqs_for_prereq, prereq_dept, safe_table_name, cur)
- # We found our course, so break from the inner 'for k' loop
break
if not found_course:
@@ -244,15 +262,15 @@ def find_prereqs(prerequisites, main_course_department, safe_table_name, cur):
except Exception as e:
print(f"Recursive scrape error on {prereq_course_id}: {e}")
- continue # Continue to the next prereq in the 'for' loop
+ continue
- # This function does not need to return anything.
- # Its only job is to find and insert.
return
-
+
def insert_courses(html_content, department):
-
+ """
+ Insert courses into the database with OR logic preserved.
+ """
db_path = "SmartAdvisors/data/classes.db"
db = sqlite3.connect(db_path)
@@ -264,10 +282,10 @@ def insert_courses(html_content, department):
print(f"Found {len(list_of_preqs)} requisite lists.")
print(f"Found {len(description)} descriptions.")
- # Sanitize department name for table name (basic)
+ # Sanitize department name for table name
safe_table_name = re.sub(r'[^a-zA-Z0-9_]', '', f"ClassesFor{department}")
- # Creates the Classes Table if not already present
+ # Create the Classes Table if not already present
try:
cur.execute(f"""CREATE TABLE IF NOT EXISTS {safe_table_name}(
Course_Num VARCHAR(10) NOT NULL PRIMARY KEY,
@@ -283,30 +301,28 @@ def insert_courses(html_content, department):
sql_insert = f"""
INSERT OR REPLACE INTO {safe_table_name}
- (Course_Num, Course_Name, Pre_Requisites,Co_Requisites, Description)
+ (Course_Num, Course_Name, Pre_Requisites, Co_Requisites, Description)
VALUES (?, ?, ?, ?, ?)
"""
+
i = 0
while i < len(list_of_titles):
- prereqs_set = list_of_preqs[i]["prereqs"] # Get the set
- coreqs_set = list_of_preqs[i]["coreqs"] # Get the set
+ prereqs_set = list_of_preqs[i]["prereqs"]
+ coreqs_set = list_of_preqs[i]["coreqs"]
- prereqs_str = ', '.join([str(item) for item in prereqs_set])
+ # --- UPDATED: Use OR logic formatter ---
+ prereqs_str = format_prerequisites_with_or_logic(prereqs_set, description[i])
coreqs_str = ', '.join([str(item) for item in coreqs_set])
- # --- This is the Depth-First Search part ---
- # 1. First, find and insert all prerequisites for this course
- # We combine prereqs and coreqs to process them all
+ # First, find and insert all prerequisites for this course
all_reqs_set = prereqs_set.union(coreqs_set)
-
- # Call the recursive function. It doesn't return anything.
find_prereqs(all_reqs_set, department, safe_table_name, cur)
- # 2. Now that all prerequisites are in the DB, insert the main course
+ # Now insert the main course
data = (
list_of_titles[i][0], # Course_Num
list_of_titles[i][1], # Course_Name
- str(prereqs_str), # Pre_Requisites
+ str(prereqs_str), # Pre_Requisites with OR logic
str(coreqs_str), # Co_Requisites
str(description[i]).strip() # Description
)
@@ -315,12 +331,17 @@ def insert_courses(html_content, department):
i += 1
except Exception as e:
print(f"Error inserting {data[0]}: {e}")
- i += 1 # Increment to avoid an infinite loop on a failing row
+ i += 1
db.commit()
db.close()
print(f"Successfully processed and saved data for {department} to {db_path}")
+
+
def get_html_content(department):
+ """
+ Fetch HTML content from UTA course catalog.
+ """
department = department.lower()
website = f"https://catalog.uta.edu/coursedescriptions/{department}"
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'}
@@ -328,19 +349,27 @@ def get_html_content(department):
print(f"Requesting data from {website}...")
try:
response = requests.get(website, headers=headers)
- response.raise_for_status() # Will raise an error for bad responses (404, 500, etc.)
+ response.raise_for_status()
print("Success.")
return response.text
except requests.exceptions.RequestException as e:
print(f"Error fetching URL: {e}")
return None
+
# --- Main execution ---
-department = "CSE" # Example department
-
-"""
-Insert the into the database for any department
-"""
-html = get_html_content(department)
-if html:
- insert_courses(html, department)
\ No newline at end of file
+if __name__ == "__main__":
+ department = "CE" # Change this to scrape other departments
+
+ print(f"Starting scraper for {department} department...")
+ print("OR logic will be preserved (format: COURSE1|COURSE2 for OR relationships)")
+ print()
+
+ html = get_html_content(department)
+ if html:
+ insert_courses(html, department)
+ print("\n✓ Scraping complete!")
+ print("Prerequisites with OR logic are stored using the '|' separator")
+ print("Example: 'MATH 3133|IE 3301' means MATH 3133 OR IE 3301")
+ else:
+ print("✗ Failed to retrieve HTML content")
\ No newline at end of file
diff --git a/server/app/scripts/scraping_prof.ipynb b/server/app/scripts/scraping_prof.ipynb
new file mode 100644
index 00000000..53c4982b
--- /dev/null
+++ b/server/app/scripts/scraping_prof.ipynb
@@ -0,0 +1,457 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "id": "3fe6b170",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from bs4 import BeautifulSoup\n",
+ "import time\n",
+ "from selenium import webdriver\n",
+ "from selenium.webdriver.chrome.service import Service\n",
+ "from selenium.webdriver.chrome.options import Options\n",
+ "from webdriver_manager.chrome import ChromeDriverManager\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "id": "3027f96d",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# 1. Setup Selenium (Headless mode so it doesn't pop up a window)\n",
+ "chrome_options = Options()\n",
+ "# chrome_options.add_argument(\"--headless\") \n",
+ "driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=chrome_options)\n",
+ "\n",
+ "# Base URL for UTA Engineering\n",
+ "base_url = \"https://www.uta.edu/academics/schools-colleges/engineering/academics/departments/civil/faculty-directory\"\n",
+ "\n",
+ "# 2. Get the main list of professors (Requests is fine for this part if the links are static)\n",
+ "# However, since we have Selenium running, let's use it for everything to be safe.\n",
+ "driver.get(base_url)\n",
+ "time.sleep(2) # Wait for page to load\n",
+ "\n",
+ "soup_main = BeautifulSoup(driver.page_source, \"html.parser\")\n",
+ "list_of_profs_urls = []\n",
+ "list_of_prof_classes = []"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "id": "3a181a8b",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "for a in soup_main.find_all('a', href=True):\n",
+ " if \"username\" in a[\"href\"]:\n",
+ " list_of_profs_urls.append(a['href'])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "id": "05a6ae80",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=hchoi\n",
+ "Added classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=chenx\n",
+ "Added classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=danoglidisp\n",
+ "Does not offer Spring 2026 Classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=eismaj\n",
+ "Added classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=nickfang\n",
+ "Added classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=hams\n",
+ "Added classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=hossain\n",
+ "Does not offer Spring 2026 Classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=hoyos\n",
+ "Added classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=hummelm\n",
+ "Added classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=hyunkk\n",
+ "Does not offer Spring 2026 Classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=jalalihh\n",
+ "Added classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=karbhari\n",
+ "Added classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=kangi\n",
+ "Added classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=konstagdoutom\n",
+ "Added classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=lip\n",
+ "Added classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=linz2\n",
+ "Added classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=spmatt\n",
+ "Added classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=najafi\n",
+ "Added classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=parkjy\n",
+ "Added classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=parks7\n",
+ "Added classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=rajiba\n",
+ "Added classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=sroman\n",
+ "Added classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=ryuk\n",
+ "Added classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=sakibm\n",
+ "Added classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=shahsp\n",
+ "Does not offer Spring 2026 Classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=mohsen\n",
+ "Does not offer Spring 2026 Classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=yazdani\n",
+ "Added classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=yuj2\n",
+ "Added classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=xinbao\n",
+ "Added classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=zhangy4#Yu%20Zhang\n",
+ "Does not offer Spring 2026 Classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=almughrabia\n",
+ "Added classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=arjunm\n",
+ "Added classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=azzawi\n",
+ "Added classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=balderramaja\n",
+ "Added classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=banihania\n",
+ "Added classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=arpitab\n",
+ "Added classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=gomeztorresn\n",
+ "Added classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=kaushalv\n",
+ "Added classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=loganathank\n",
+ "Added classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=parsaeifardn\n",
+ "Added classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=prabakar\n",
+ "Added classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=shapoorianb\n",
+ "Added classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=tsungn\n",
+ "Added classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=yinz\n",
+ "Added classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=kruzic\n",
+ "Does not offer Spring 2026 Classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=djseo\n",
+ "Does not offer Spring 2026 Classes\n",
+ "Scraping: https://www.uta.edu/academics/faculty/profile?username=cejcwill\n",
+ "Does not offer Spring 2026 Classes\n",
+ "[['CE 3131, section 001, ENVIRONMENTAL ANALYSIS', 'CE 3131, section 002, ENVIRONMENTAL ANALYSIS', 'CE 3131, section 003, ENVIRONMENTAL ANALYSIS', 'CE 5319, section 001, PHYSICAL-CHEMICAL PROCESSES II', 'CE 4353, section 101, WATER CHEMISTRY', ''], ['CE 5325, section 001, BIOLOGICAL PROCESSES', 'CE 5325, section 101, BIOLOGICAL PROCESSES', 'CE 4357, section 001, INTRO BIO WASTEWATER TREATMENT', 'CE 4357, section 101, INTRO BIO WASTEWATER TREATMENT', ''], ['CE 3342, section 001, WATER RESOURCES ENGINEERING', 'CE 3342, section 101, WATER RESOURCES ENGINEERING', ''], ['CE 4328, section 001, WATER SYSTEM DESIGN', ''], ['AREN 3341, section 001, STRUCTURAL ANALYSIS', 'AREN 3341, section 101, STRUCTURAL ANALYSIS', 'CE 3341, section 001, STRUCTURAL ANALYSIS', 'CE 3341, section 101, STRUCTURAL ANALYSIS', ''], ['CE 5367, section 101, DESIGN OF EARTH STRUCTURES', 'CE 4320, section 001, EARTH STRUCTURES DESIGN', 'CE 4320, section 101, EARTH STRUCTURES DESIGN', 'AREN 3343, section 001, SOIL MECHANICS', 'AREN 3343, section 101, SOIL MECHANICS', 'CE 3343, section 001, SOIL MECHANICS', 'CE 3343, section 101, SOIL MECHANICS', ''], ['CE 4300, section 001, ADVANCED TOPICS IN CIVIL ENGR', 'CE 5300, section 001, TOPICS IN CIVIL ENGINEERING', ''], ['CE 5303, section 001, INTRODUCTION TO FINITE ELEMENT', ''], ['AREN 2313, section 001, MECHANICS OF MATERIALS I', 'CE 2313, section 001, MECHANICS OF MATERIALS I', ''], ['AREN 4331, section 001, BUILDING HVAC SYSTEMS DESIGN', ''], ['CE 5302, section 001, ADVANCED CONCRETE MATERIALS', 'CE 5302, section 101, ADVANCED CONCRETE MATERIALS', 'MSE 6999, section 084, DISSERTATION', 'MSE 7399, section 084, DOCTORAL DEGREE COMPLETION', 'MSE 6298, section 084, RESEARCH IN MSE', 'MSE 6698, section 084, RESEARCH IN MSE', 'MSE 6998, section 084, RESEARCH IN MSE', 'MSE 5698, section 084, THESIS', ''], ['CE 5330, section 001, CHARACTERISTICS OF TRAFFIC', ''], ['CE 4383, section 001, SENIOR PROJECT', 'CE 4383, section 011, SENIOR PROJECT', ''], ['CE 4383, section 001, SENIOR PROJECT', 'CE 4383, section 011, SENIOR PROJECT', 'AREN 3301, section 001, STOCHASTIC MODELS FOR CE', 'AREN 3301, section 101, STOCHASTIC MODELS FOR CE', 'CE 5338, section 101, SYSTEM EVALUATION', 'CE 4310, section 101, SYSTEM EVALUATION IN CE', ''], ['CE 4332, section 001, CONSTRUCTION EQUIP/METHODS/MGT', 'CM 4332, section 001, CONSTRUCTION FIELD OPERATIONS', 'CE 5344, section 001, CONSTRUCTION METHODS FIELD OPS', 'CM 5344, section 001, CONSTRUCTION METHODS FIELD OPS', ''], ['AREN 4314, section 001, TECH FOR HIGH PERFORM BUILDING', 'AREN 4314, section 101, TECH FOR HIGH PERFORM BUILDING', ''], ['CE 5327, section 101, ADVANCED PROJECT CONTROL', ''], ['CE 5329, section 001, CE INFORMATICS', ''], ['CE 5361, section 001, ASPHALT CONCRETE', 'CE 5361, section 101, ASPHALT CONCRETE', 'CE 4336, section 001, ASPHALT DESIGN & CONSTRUCTION', 'CE 4336, section 101, ASPHALT DESIGN & CONSTRUCTION', 'CE 3361, section 001, PROP & BEHAVIOR CE MATERIALS', 'CE 3361, section 011, PROP & BEHAVIOR CE MATERIALS', 'CE 3361, section 012, PROP & BEHAVIOR CE MATERIALS', 'CE 3361, section 101, PROP & BEHAVIOR CE MATERIALS', 'CE 3361, section 111, PROP & BEHAVIOR CE MATERIALS', 'CE 3361, section 112, PROP & BEHAVIOR CE MATERIALS', 'CE 5300, section 102, TOPICS IN CIVIL ENGINEERING', ''], ['CM 4317, section 001, CONSTRUCTION SCHEDULING', 'CM 4317, section 002, CONSTRUCTION SCHEDULING', ''], ['CE 5343, section 001, ADV BLDG INFORMATION MODELING', 'CE 5343, section 011, ADV BLDG INFORMATION MODELING', 'CM 5343, section 001, ADV BLDG INFORMATION MODELING', 'CM 5343, section 011, ADV BLDG INFORMATION MODELING', ''], ['AREN 4347, section 001, REINFORCED CONCRETE DESIGN', 'AREN 4347, section 101, REINFORCED CONCRETE DESIGN', 'CE 4347, section 001, REINFORCED CONCRETE DESIGN', 'CE 4347, section 101, REINFORCED CONCRETE DESIGN', ''], ['CE 5316, section 001, MACHINE LEARNING FOR CE', ''], ['CE 6311, section 101, ADVANCED FOUNDATION DESIGN', ''], ['CM 3337, section 001, CONSTR ADMIN & ECONOMICS', 'CM 3337, section 101, CONSTR ADMIN & ECONOMICS', 'CM 3315, section 001, CONSTRUCTION LAW AND ETHICS', 'CM 3315, section 101, CONSTRUCTION LAW AND ETHICS', 'CM 4337, section 001, LAND AND SITE DEVELOPMENT', 'CM 4337, section 101, LAND AND SITE DEVELOPMENT', ''], ['CM 4351, section 001, BUILDING INFO MODELING FOR CM', 'CM 2331, section 001, CONSTRUCTION DOCUMENTS', 'CM 2331, section 101, CONSTRUCTION DOCUMENTS', 'CM 1311, section 001, CONSTRUCTION DRAFTING', 'CM 4357, section 001, SUSTAINABLE BUILDING PRACTICE', 'CM 4357, section 101, SUSTAINABLE BUILDING PRACTICE', ''], ['CE 5311, section 001, ADVANCED STEEL DESIGN I', 'CE 5311, section 101, ADVANCED STEEL DESIGN I', 'CE 2221, section 001, DYNAMICS', 'CE 2221, section 101, DYNAMICS', 'CE 2311, section 001, STATICS', 'CE 5307, section 001, STRUCTURAL TIMBER DESIGN', 'CE 5307, section 101, STRUCTURAL TIMBER DESIGN', 'AREN 4365, section 101, STRUCTURAL WOOD DESIGN', 'CE 4365, section 001, STRUCTURAL WOOD DESIGN', 'CE 4365, section 101, STRUCTURAL WOOD DESIGN', ''], ['AREN 3330, section 001, APPLIC BUILDING CODES IN ARCH', 'AREN 3330, section 101, APPLIC BUILDING CODES IN ARCH', 'AREN 3315, section 001, BUILDING HYDRAULIC SRV SYSTEMS', 'AREN 3315, section 101, BUILDING HYDRAULIC SRV SYSTEMS', 'AREN 4316, section 001, BUILDING STRUCTURAL SYSTEMS', 'AREN 4360, section 001, DESIGN OF STRUCTURAL MASONRY', 'AREN 4360, section 101, DESIGN OF STRUCTURAL MASONRY', 'CE 4360, section 001, DESIGN OF STRUCTURAL MASONRY', 'CE 4360, section 101, DESIGN OF STRUCTURAL MASONRY', 'AREN 4383, section 001, SENIOR PROJECT', 'AREN 4348, section 001, STRUCTURAL DESIGN IN STEEL', 'CE 4348, section 001, STRUCTURAL DESIGN IN STEEL', 'CE 4348, section 101, STRUCTURAL DESIGN IN STEEL', 'CE 5308, section 001, STRUCTURAL MASONRY DESIGN', 'CE 5308, section 101, STRUCTURAL MASONRY DESIGN', 'CE 5306, section 001, STRUCTURAL STEEL DESIGN', ''], ['CM 2313, section 001, CONSTR MATERIALS & METHODS', 'CM 2313, section 101, CONSTR MATERIALS & METHODS', 'CM 3339, section 001, CONSTRUCTION SAFETY', 'CM 3331, section 001, MECHANICAL & ELECTRICAL SYSTEM', 'CM 3335, section 001, SOILS & FOUNDATION IN CONSTR', ''], ['AREN 4307, section 001, CONSTRUCTION SUSTAINABILITY', 'AREN 4307, section 101, CONSTRUCTION SUSTAINABILITY', 'CE 4307, section 001, CONSTRUCTION SUSTAINABILITY', 'CE 5382, section 101, CONSTRUCTION SUSTAINABILITY', 'CM 5382, section 101, CONSTRUCTION SUSTAINABILITY', 'CE 5358, section 101, SOLID WASTE ENGINEERING', 'CE 4395, section 001, SUSTAINABLE ENGR DESIGN PROJEC', ''], ['CE 4352, section 001, PROFESSIONAL PRACTICE', 'CE 4352, section 011, PROFESSIONAL PRACTICE', 'CE 3301, section 001, STOCHASTIC MODELS FOR CE', 'CE 3301, section 101, STOCHASTIC MODELS FOR CE', 'CE 3302, section 001, TRANSPORTATION ENGINEERING', 'CE 3302, section 101, TRANSPORTATION ENGINEERING', ''], ['CM 4306, section 001, BUILDING CONSTRUCTION CONTRACT', 'CM 4306, section 101, BUILDING CONSTRUCTION CONTRACT', 'CM 3341, section 001, CONSTRUCTION DESIGN', 'CM 3341, section 101, CONSTRUCTION DESIGN', 'CM 2315, section 001, INTRO MECHANICS FOR CONSTR', ''], ['CM 5379, section 001, CONSTRUCTION COST ESTIMATING', 'CM 5379, section 012, CONSTRUCTION COST ESTIMATING', 'CM 3313, section 001, CONSTRUCTION ESTIMATING I', 'CM 4315, section 001, CONSTRUCTION ESTIMATING II', 'CM 4315, section 101, CONSTRUCTION ESTIMATING II', ''], ['AREN 2315, section 001, CONSTR MATERIALS & METHODS', 'AREN 2315, section 101, CONSTR MATERIALS & METHODS', 'CE 5377, section 001, CONSTRUCTION FINANCE', 'CM 5377, section 001, CONSTRUCTION FINANCE', 'CM 5377, section 101, CONSTRUCTION FINANCE', 'CE 5355, section 001, CONSTRUCTION MATERIALS', 'CE 5355, section 101, CONSTRUCTION MATERIALS', 'CM 5355, section 001, CONSTRUCTION MATERIALS', 'CM 5355, section 101, CONSTRUCTION MATERIALS', 'AREN 1205, section 001, INTRO TO ARCHITECTURAL ENGR', 'AREN 1205, section 011, INTRO TO ARCHITECTURAL ENGR', ''], ['CE 5321, section 001, ENGRG FOR ENVIR SCIENTISTS', 'CE 3334, section 001, PRINCIPLES ENVIRONMENTAL ENGR', 'CE 3334, section 101, PRINCIPLES ENVIRONMENTAL ENGR', ''], ['CM 4331, section 001, CONSTRUCTION MGMT CAPSTONE', 'CM 4359, section 001, INDUSTRIAL INTERNSHIP I', 'CM 4360, section 001, INDUSTRIAL INTERNSHIP II', ''], ['CE 5387, section 001, CONSTRUCTION PRODUCTIVITY', 'CM 5387, section 001, CONSTRUCTION PRODUCTIVITY', 'CM 5387, section 101, CONSTRUCTION PRODUCTIVITY', 'CE 5342, section 001, CONSTRUCTION PROJECT ADMIN', 'CM 5342, section 001, CONSTRUCTION PROJECT ADMIN', 'CM 5342, section 101, CONSTRUCTION PROJECT ADMIN', 'CE 5350, section 001, RISK MANAGEMENT', 'CM 5350, section 001, RISK MANAGEMENT', 'CE 5300, section 003, TOPICS IN CIVIL ENGINEERING', 'CM 5300, section 003, TOPICS IN CONSTRUCTION MGMT', ''], ['CE 4304, section 001, CONSTR CONTRACT, SPECS & ADMIN', 'CE 5378, section 001, CONSTR CONTRACT, SPECS & ADMIN', 'CM 5378, section 001, CONSTR CONTRACT, SPECS & ADMIN', 'AREN 3311, section 001, CONSTRUCTION ENGINEERING', 'AREN 3311, section 101, CONSTRUCTION ENGINEERING', 'CE 3311, section 001, CONSTRUCTION ENGINEERING', 'CE 3311, section 101, CONSTRUCTION ENGINEERING', 'AREN 4334, section 001, DRONES & ADV CONSTRUCTION TECH', 'CE 4334, section 001, DRONES & ADV CONSTRUCTION TECH', 'CM 4334, section 001, DRONES & ADV CONSTRUCTION TECH', 'CE 1105, section 001, INTRO TO CIVIL ENGINEERING', 'CE 1105, section 002, INTRO TO CIVIL ENGINEERING', '']]\n"
+ ]
+ }
+ ],
+ "source": [
+ "if not list_of_profs_urls:\n",
+ " print(\"No professor URLs found. Check the selector.\")\n",
+ "else:\n",
+ " for target_url in list_of_profs_urls:\n",
+ " # 3. Go to the specific professor's page\n",
+ " print(f\"Scraping: {target_url}\")\n",
+ " \n",
+ " driver.get(target_url+\"#Teaching\")\n",
+ " \n",
+ " # CRITICAL: Wait for JavaScript to load the \"Teaching\" section\n",
+ " # Sometimes you might need to click the tab button if it's hidden behind a click\n",
+ " time.sleep(5) \n",
+ "\n",
+ " # 4. Pass the rendered HTML to BeautifulSoup\n",
+ " soup_profile = BeautifulSoup(driver.page_source, \"html.parser\")\n",
+ "\n",
+ " target_semester = \"Spring 2026\"\n",
+ " semester_header = soup_profile.find(\n",
+ " \"h3\", \n",
+ " class_=\"dm-profile-heading\", \n",
+ " string=lambda text: text and target_semester in text\n",
+ " )\n",
+ " # 5. Find the teaching items\n",
+ " \n",
+ " if semester_header:\n",
+ " teaching_items = soup_profile.find_all('ol', class_=\"dm-profile-activities content--heading8--37285\")\n",
+ " try:\n",
+ " if not teaching_items:\n",
+ " print(\"No teaching items found. The content might be inside an iframe or requires a click.\")\n",
+ " list_of_prof_classes.append(teaching_items[0].text.split(\".\"))\n",
+ " else:\n",
+ " list_of_prof_classes.append(teaching_items[0].text.split(\".\"))\n",
+ " print(\"Added classes\")\n",
+ " except:\n",
+ " print(\"Likely a Emeritus Professor\")\n",
+ " else:\n",
+ " print(\"Does not offer Spring 2026 Classes\")\n",
+ "# Close the browser\n",
+ "print(list_of_prof_classes)\n",
+ "# driver.quit()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "id": "db8eddf6",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import pandas as pd"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "id": "7b2682da",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "ls = pd.DataFrame(list_of_profs_urls)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "4b7f3247",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "['CE 3131', ' section 001', ' ENVIRONMENTAL ANALYSIS']\n",
+ "['CE 3131', ' section 002', ' ENVIRONMENTAL ANALYSIS']\n",
+ "['CE 3131', ' section 003', ' ENVIRONMENTAL ANALYSIS']\n",
+ "['CE 5319', ' section 001', ' PHYSICAL-CHEMICAL PROCESSES II']\n",
+ "['CE 4353', ' section 101', ' WATER CHEMISTRY']\n",
+ "\n",
+ "\n",
+ "['CE 5325', ' section 001', ' BIOLOGICAL PROCESSES']\n",
+ "['CE 5325', ' section 101', ' BIOLOGICAL PROCESSES']\n",
+ "['CE 4357', ' section 001', ' INTRO BIO WASTEWATER TREATMENT']\n",
+ "['CE 4357', ' section 101', ' INTRO BIO WASTEWATER TREATMENT']\n",
+ "\n",
+ "\n",
+ "['CE 3342', ' section 001', ' WATER RESOURCES ENGINEERING']\n",
+ "['CE 3342', ' section 101', ' WATER RESOURCES ENGINEERING']\n",
+ "\n",
+ "\n",
+ "['CE 4328', ' section 001', ' WATER SYSTEM DESIGN']\n",
+ "\n",
+ "\n",
+ "['CE 3341', ' section 001', ' STRUCTURAL ANALYSIS']\n",
+ "['CE 3341', ' section 101', ' STRUCTURAL ANALYSIS']\n",
+ "\n",
+ "\n",
+ "['CE 5367', ' section 101', ' DESIGN OF EARTH STRUCTURES']\n",
+ "['CE 4320', ' section 001', ' EARTH STRUCTURES DESIGN']\n",
+ "['CE 4320', ' section 101', ' EARTH STRUCTURES DESIGN']\n",
+ "['CE 3343', ' section 001', ' SOIL MECHANICS']\n",
+ "['CE 3343', ' section 101', ' SOIL MECHANICS']\n",
+ "\n",
+ "\n",
+ "['CE 4300', ' section 001', ' ADVANCED TOPICS IN CIVIL ENGR']\n",
+ "['CE 5300', ' section 001', ' TOPICS IN CIVIL ENGINEERING']\n",
+ "\n",
+ "\n",
+ "['CE 5303', ' section 001', ' INTRODUCTION TO FINITE ELEMENT']\n",
+ "\n",
+ "\n",
+ "['CE 2313', ' section 001', ' MECHANICS OF MATERIALS I']\n",
+ "\n",
+ "\n",
+ "\n",
+ "\n",
+ "['CE 5302', ' section 001', ' ADVANCED CONCRETE MATERIALS']\n",
+ "['CE 5302', ' section 101', ' ADVANCED CONCRETE MATERIALS']\n",
+ "\n",
+ "\n",
+ "['CE 5330', ' section 001', ' CHARACTERISTICS OF TRAFFIC']\n",
+ "\n",
+ "\n",
+ "['CE 4383', ' section 001', ' SENIOR PROJECT']\n",
+ "['CE 4383', ' section 011', ' SENIOR PROJECT']\n",
+ "\n",
+ "\n",
+ "['CE 4383', ' section 001', ' SENIOR PROJECT']\n",
+ "['CE 4383', ' section 011', ' SENIOR PROJECT']\n",
+ "['AREN 3301', ' section 001', ' STOCHASTIC MODELS FOR CE']\n",
+ "['AREN 3301', ' section 101', ' STOCHASTIC MODELS FOR CE']\n",
+ "['CE 5338', ' section 101', ' SYSTEM EVALUATION']\n",
+ "['CE 4310', ' section 101', ' SYSTEM EVALUATION IN CE']\n",
+ "\n",
+ "\n",
+ "['CE 4332', ' section 001', ' CONSTRUCTION EQUIP/METHODS/MGT']\n",
+ "['CE 5344', ' section 001', ' CONSTRUCTION METHODS FIELD OPS']\n",
+ "\n",
+ "\n",
+ "\n",
+ "\n",
+ "['CE 5327', ' section 101', ' ADVANCED PROJECT CONTROL']\n",
+ "\n",
+ "\n",
+ "['CE 5329', ' section 001', ' CE INFORMATICS']\n",
+ "\n",
+ "\n",
+ "['CE 5361', ' section 001', ' ASPHALT CONCRETE']\n",
+ "['CE 5361', ' section 101', ' ASPHALT CONCRETE']\n",
+ "['CE 4336', ' section 001', ' ASPHALT DESIGN & CONSTRUCTION']\n",
+ "['CE 4336', ' section 101', ' ASPHALT DESIGN & CONSTRUCTION']\n",
+ "['CE 3361', ' section 001', ' PROP & BEHAVIOR CE MATERIALS']\n",
+ "['CE 3361', ' section 011', ' PROP & BEHAVIOR CE MATERIALS']\n",
+ "['CE 3361', ' section 012', ' PROP & BEHAVIOR CE MATERIALS']\n",
+ "['CE 3361', ' section 101', ' PROP & BEHAVIOR CE MATERIALS']\n",
+ "['CE 3361', ' section 111', ' PROP & BEHAVIOR CE MATERIALS']\n",
+ "['CE 3361', ' section 112', ' PROP & BEHAVIOR CE MATERIALS']\n",
+ "['CE 5300', ' section 102', ' TOPICS IN CIVIL ENGINEERING']\n",
+ "\n",
+ "\n",
+ "\n",
+ "\n",
+ "['CE 5343', ' section 001', ' ADV BLDG INFORMATION MODELING']\n",
+ "['CE 5343', ' section 011', ' ADV BLDG INFORMATION MODELING']\n",
+ "\n",
+ "\n",
+ "['AREN 4347', ' section 001', ' REINFORCED CONCRETE DESIGN']\n",
+ "['AREN 4347', ' section 101', ' REINFORCED CONCRETE DESIGN']\n",
+ "['CE 4347', ' section 001', ' REINFORCED CONCRETE DESIGN']\n",
+ "['CE 4347', ' section 101', ' REINFORCED CONCRETE DESIGN']\n",
+ "\n",
+ "\n",
+ "['CE 5316', ' section 001', ' MACHINE LEARNING FOR CE']\n",
+ "\n",
+ "\n",
+ "['CE 6311', ' section 101', ' ADVANCED FOUNDATION DESIGN']\n",
+ "\n",
+ "\n",
+ "\n",
+ "\n",
+ "['CM 4357', ' section 001', ' SUSTAINABLE BUILDING PRACTICE']\n",
+ "['CM 4357', ' section 101', ' SUSTAINABLE BUILDING PRACTICE']\n",
+ "\n",
+ "\n",
+ "['CE 5311', ' section 001', ' ADVANCED STEEL DESIGN I']\n",
+ "['CE 5311', ' section 101', ' ADVANCED STEEL DESIGN I']\n",
+ "['CE 2221', ' section 001', ' DYNAMICS']\n",
+ "['CE 2221', ' section 101', ' DYNAMICS']\n",
+ "['CE 2311', ' section 001', ' STATICS']\n",
+ "['CE 5307', ' section 001', ' STRUCTURAL TIMBER DESIGN']\n",
+ "['CE 5307', ' section 101', ' STRUCTURAL TIMBER DESIGN']\n",
+ "['CE 4365', ' section 001', ' STRUCTURAL WOOD DESIGN']\n",
+ "['CE 4365', ' section 101', ' STRUCTURAL WOOD DESIGN']\n",
+ "\n",
+ "\n",
+ "['CE 4360', ' section 001', ' DESIGN OF STRUCTURAL MASONRY']\n",
+ "['CE 4360', ' section 101', ' DESIGN OF STRUCTURAL MASONRY']\n",
+ "['CE 4348', ' section 001', ' STRUCTURAL DESIGN IN STEEL']\n",
+ "['CE 4348', ' section 101', ' STRUCTURAL DESIGN IN STEEL']\n",
+ "['CE 5308', ' section 001', ' STRUCTURAL MASONRY DESIGN']\n",
+ "['CE 5308', ' section 101', ' STRUCTURAL MASONRY DESIGN']\n",
+ "['CE 5306', ' section 001', ' STRUCTURAL STEEL DESIGN']\n",
+ "\n",
+ "\n",
+ "\n",
+ "\n",
+ "['CE 4307', ' section 001', ' CONSTRUCTION SUSTAINABILITY']\n",
+ "['CE 5382', ' section 101', ' CONSTRUCTION SUSTAINABILITY']\n",
+ "['CE 5358', ' section 101', ' SOLID WASTE ENGINEERING']\n",
+ "['CE 4395', ' section 001', ' SUSTAINABLE ENGR DESIGN PROJEC']\n",
+ "\n",
+ "\n",
+ "['CE 4352', ' section 001', ' PROFESSIONAL PRACTICE']\n",
+ "['CE 4352', ' section 011', ' PROFESSIONAL PRACTICE']\n",
+ "['CE 3301', ' section 001', ' STOCHASTIC MODELS FOR CE']\n",
+ "['CE 3301', ' section 101', ' STOCHASTIC MODELS FOR CE']\n",
+ "['CE 3302', ' section 001', ' TRANSPORTATION ENGINEERING']\n",
+ "['CE 3302', ' section 101', ' TRANSPORTATION ENGINEERING']\n",
+ "\n",
+ "\n",
+ "\n",
+ "\n",
+ "\n",
+ "\n",
+ "['CE 5377', ' section 001', ' CONSTRUCTION FINANCE']\n",
+ "['CM 5377', ' section 001', ' CONSTRUCTION FINANCE']\n",
+ "['CM 5377', ' section 101', ' CONSTRUCTION FINANCE']\n",
+ "['CE 5355', ' section 001', ' CONSTRUCTION MATERIALS']\n",
+ "['CE 5355', ' section 101', ' CONSTRUCTION MATERIALS']\n",
+ "\n",
+ "\n",
+ "['CE 5321', ' section 001', ' ENGRG FOR ENVIR SCIENTISTS']\n",
+ "['CE 3334', ' section 001', ' PRINCIPLES ENVIRONMENTAL ENGR']\n",
+ "['CE 3334', ' section 101', ' PRINCIPLES ENVIRONMENTAL ENGR']\n",
+ "\n",
+ "\n",
+ "\n",
+ "\n",
+ "['CE 5387', ' section 001', ' CONSTRUCTION PRODUCTIVITY']\n",
+ "['CE 5342', ' section 001', ' CONSTRUCTION PROJECT ADMIN']\n",
+ "['CE 5350', ' section 001', ' RISK MANAGEMENT']\n",
+ "['CE 5300', ' section 003', ' TOPICS IN CIVIL ENGINEERING']\n",
+ "\n",
+ "\n",
+ "['CE 4304', ' section 001', ' CONSTR CONTRACT', ' SPECS & ADMIN']\n",
+ "['CE 5378', ' section 001', ' CONSTR CONTRACT', ' SPECS & ADMIN']\n",
+ "['CE 3311', ' section 001', ' CONSTRUCTION ENGINEERING']\n",
+ "['CE 3311', ' section 101', ' CONSTRUCTION ENGINEERING']\n",
+ "['CE 4334', ' section 001', ' DRONES & ADV CONSTRUCTION TECH']\n",
+ "['CE 1105', ' section 001', ' INTRO TO CIVIL ENGINEERING']\n",
+ "['CE 1105', ' section 002', ' INTRO TO CIVIL ENGINEERING']\n",
+ "\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "for i in list_of_prof_classes:\n",
+ " for j in i:\n",
+ " if \"CE\" in j:\n",
+ " print(j.split(\",\"))\n",
+ " print(\"\\n\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "d45b94f1",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": ".venv",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.12.3"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}