diff --git a/.gitignore b/.gitignore index 4dd52a2..538e56e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ config.json -users.csv +*.csv +*.csv +grading_data_generator diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..1a79f12 --- /dev/null +++ b/Makefile @@ -0,0 +1,13 @@ +cleandata: + rm users.csv sections.csv + +cleanbinary: + rm user_data_generator + +clean: cleandata cleanbinary + +build: + go build -o grading_data_generator + +rerun: clean build + ./grading_data_generator diff --git a/go.mod b/go.mod index 00c29f5..1f8d4ac 100644 --- a/go.mod +++ b/go.mod @@ -1,5 +1,5 @@ -module maurer/user_data_generator +module maurer/grading_data_generator go 1.26.1 -require github.com/brianvoe/gofakeit/v6 v6.28.0 // indirect +require github.com/brianvoe/gofakeit/v6 v6.28.0 diff --git a/main.go b/main.go index 5c61a4a..2e8b5f6 100644 --- a/main.go +++ b/main.go @@ -19,6 +19,471 @@ var course_type = []string{ "E", } +var course_information = []Section{ + {CourseNumber: "B560", + CourseTitle: "Academic Legal Writing: Dissertation Fundamentals"}, + {CourseNumber: "B652", + CourseTitle: "Accounting for Lawyers"}, + {CourseNumber: "B713", + CourseTitle: "Administrative Law"}, + {CourseNumber: "B528", + CourseTitle: "Advanced Appellate Advocacy"}, + {CourseNumber: "B631", + CourseTitle: "Advanced Bankruptcy: Business Reorganization"}, + {CourseNumber: "B634", + CourseTitle: "Advanced Constitutional Law: Issues Related to the Press"}, + {CourseNumber: "B634", + CourseTitle: "Advanced Constitutional Law"}, + {CourseNumber: "B595", + CourseTitle: "Advanced Environmental Law and Practice"}, + {CourseNumber: "B639", + CourseTitle: "Advanced Legal Research"}, + {CourseNumber: "B639", + CourseTitle: "Advanced Legal Research: LLMs and SJDs"}, + {CourseNumber: "B791", + CourseTitle: "Advanced Legal Writing"}, + {CourseNumber: "B517", + CourseTitle: "Advanced Patent Law"}, + {CourseNumber: "B720", + CourseTitle: "Advanced Trial Practice"}, + {CourseNumber: "B734", + CourseTitle: "Advocacy: ABA"}, + {CourseNumber: "B734", + CourseTitle: "Advocacy: AIPLA"}, + {CourseNumber: "B734", + CourseTitle: "Advocacy: External Moot Court Team"}, + {CourseNumber: "B734", + CourseTitle: "Advocacy: IP"}, + {CourseNumber: "B734", + CourseTitle: "Advocacy: International Patent Drafting"}, + {CourseNumber: "B734", + CourseTitle: "Advocacy: LawMeet"}, + {CourseNumber: "B734", + CourseTitle: "Advocacy: Moot Court Board"}, + {CourseNumber: "B734", + CourseTitle: "Advocacy: Pace Moot Court Team"}, + {CourseNumber: "B540", + CourseTitle: "After Atrocities: Processes of Post-Conflict Justice"}, + {CourseNumber: "B570", + CourseTitle: "American Constitutional Law for Foreign Lawyers"}, + {CourseNumber: "B659", + CourseTitle: "American Legal History"}, + {CourseNumber: "B729", + CourseTitle: "Antitrust Law"}, + {CourseNumber: "B642", + CourseTitle: "Appellate Advocacy"}, + {CourseNumber: "B671", + CourseTitle: "Appellate Practice and Procedure"}, + {CourseNumber: "B671", + CourseTitle: "Appellate Practice and Procedure: Criminal Appeal: From Transcript to Argument"}, + {CourseNumber: "B710", + CourseTitle: "Cybersecurity Clinic"}, + {CourseNumber: "B769", + CourseTitle: "Banking Law"}, + {CourseNumber: "B725", + CourseTitle: "Bankruptcy"}, + {CourseNumber: "B793", + CourseTitle: "Business and Human Rights"}, + {CourseNumber: "B632", + CourseTitle: "Business Planning"}, + {CourseNumber: "B614", + CourseTitle: "Career Choices"}, + {CourseNumber: "B674", + CourseTitle: "Center for Constitutional Democracy"}, + {CourseNumber: "B781", + CourseTitle: "Children and the Law"}, + {CourseNumber: "B533", + CourseTitle: "Civil Procedure"}, + {CourseNumber: "B534", + CourseTitle: "Civil Procedure II"}, + {CourseNumber: "B580", + CourseTitle: "Civil Rights Statutes"}, + {CourseNumber: "B506", + CourseTitle: "Climate Law and Policy"}, + {CourseNumber: "B688", + CourseTitle: "Community Legal Clinic"}, + {CourseNumber: "B748", + CourseTitle: "Comparative Law: Comparative Legal Systems"}, + {CourseNumber: "B748", + CourseTitle: "Comparative Law: Constitutional Design and the Economy"}, + {CourseNumber: "B748", + CourseTitle: "Comparative Law: Islam and Human Rights"}, + {CourseNumber: "B667", + CourseTitle: "Complex Litigation"}, + {CourseNumber: "B745", + CourseTitle: "Conflict of Laws"}, + {CourseNumber: "B558", + CourseTitle: "Conservation Law Clinic"}, + {CourseNumber: "B575", + CourseTitle: "Constitutional Design in Multiethnic Societies"}, + {CourseNumber: "B760", + CourseTitle: "Constitutional History Colloquium"}, + {CourseNumber: "B513", + CourseTitle: "Constitutional Law"}, + {CourseNumber: "B668", + CourseTitle: "Constitutional Law II"}, + {CourseNumber: "B606", + CourseTitle: "Constitutional Litigation"}, + {CourseNumber: "B501", + CourseTitle: "Contracts"}, + {CourseNumber: "B662", + CourseTitle: "Copyright Law"}, + {CourseNumber: "B656", + CourseTitle: "Corporate Finance Law"}, + {CourseNumber: "B700", + CourseTitle: "Corporate Taxation"}, + {CourseNumber: "B653", + CourseTitle: "Corporations"}, + {CourseNumber: "B511", + CourseTitle: "Criminal Law"}, + {CourseNumber: "B545", + CourseTitle: "Criminal Law Externship"}, + {CourseNumber: "B786", + CourseTitle: "Criminal Procedure Capstone"}, + {CourseNumber: "B604", + CourseTitle: "Criminal Procedure: LLM"}, + {CourseNumber: "B602", + CourseTitle: "Criminal Procedure: Trial"}, + {CourseNumber: "B601", + CourseTitle: "Criminal Process: Investigation"}, + {CourseNumber: "B587", + CourseTitle: "Cybersecurity Law I"}, + {CourseNumber: "B738", + CourseTitle: "Cybersecurity Law II"}, + {CourseNumber: "B710", + CourseTitle: "Cybersecurity Law Clinic"}, + {CourseNumber: "B581", + CourseTitle: "Decision Making for Lawyers: Concepts, Duties and Skills"}, + {CourseNumber: "B714", + CourseTitle: "Deliberative Leadership"}, + {CourseNumber: "B563", + CourseTitle: "Domestic Relations Mediation"}, + {CourseNumber: "B680", + CourseTitle: "Employment Discrimination"}, + {CourseNumber: "B719", + CourseTitle: "Employment Law"}, + {CourseNumber: "B590", + CourseTitle: "Entertainment Law"}, + {CourseNumber: "B561", + CourseTitle: "Entrepreneurship Law Clinic"}, + {CourseNumber: "B740", + CourseTitle: "Estate Planning"}, + {CourseNumber: "B611", + CourseTitle: "Ethics and Compliance"}, + {CourseNumber: "B755", + CourseTitle: "European Union Law"}, + {CourseNumber: "B723", + CourseTitle: "Evidence"}, + {CourseNumber: "B691", + CourseTitle: "Family and Children Mediation Clinic"}, + {CourseNumber: "B608", + CourseTitle: "Family Law"}, + {CourseNumber: "B532", + CourseTitle: "Federal Circuit Advocacy"}, + {CourseNumber: "B739", + CourseTitle: "Federal Criminal Law and White Collar Crime"}, + {CourseNumber: "B571", + CourseTitle: "Federal Habeas Litigation"}, + {CourseNumber: "B733", + CourseTitle: "Federal Jurisdiction"}, + {CourseNumber: "B789", + CourseTitle: "Feminist Jurisprudence"}, + {CourseNumber: "B568", + CourseTitle: "Gender and The Law"}, + {CourseNumber: "B536", + CourseTitle: "Health Law"}, + {CourseNumber: "B536", + CourseTitle: "Health Privacy Law"}, + {CourseNumber: "B793", + CourseTitle: "Human Rights"}, + {CourseNumber: "B669", + CourseTitle: "Immigration Law"}, + {CourseNumber: "B655", + CourseTitle: "Information Privacy and Security Management Practicum"}, + {CourseNumber: "B708", + CourseTitle: "Information Privacy Law I"}, + {CourseNumber: "B728", + CourseTitle: "Information Privacy Law II"}, + {CourseNumber: "B587", + CourseTitle: "Information Security Law"}, + {CourseNumber: "B710", + CourseTitle: "Independent Clinical Project"}, + {CourseNumber: "B572", + CourseTitle: "Intellectual Property Clinic"}, + {CourseNumber: "B551", + CourseTitle: "Intellectual Property Externship"}, + {CourseNumber: "B544", + CourseTitle: "Intellectual Property Transactions"}, + {CourseNumber: "B726", + CourseTitle: "Intellectual Property/Antitrust"}, + {CourseNumber: "B620", + CourseTitle: "International Business Negotiations"}, + {CourseNumber: "B735", + CourseTitle: "International Business Transactions"}, + {CourseNumber: "B565", + CourseTitle: "International Criminal Law"}, + {CourseNumber: "B783", + CourseTitle: "International Environmental Law"}, + {CourseNumber: "B549", + CourseTitle: "International Intellectual Property"}, + {CourseNumber: "B665", + CourseTitle: "International Law"}, + {CourseNumber: "B666", + CourseTitle: "International Securities Regulation"}, + {CourseNumber: "B759", + CourseTitle: "International Trade"}, + {CourseNumber: "B792", + CourseTitle: "Internet Law"}, + {CourseNumber: "B792", + CourseTitle: "Internet Law: Political and Legal Dimensions"}, + {CourseNumber: "B638", + CourseTitle: "Introduction to American Legal Research"}, + {CourseNumber: "B782", + CourseTitle: "Introduction to Environmental Law"}, + {CourseNumber: "B650", + CourseTitle: "Introduction to Income Tax"}, + {CourseNumber: "B504", + CourseTitle: "Introduction to Law"}, + {CourseNumber: "B567", + CourseTitle: "IP Practicum: Legal Aspects of Music"}, + {CourseNumber: "B698", + CourseTitle: "Judicial Field Placements"}, + {CourseNumber: "B788", + CourseTitle: "Labor and Employment Arbitration"}, + {CourseNumber: "B663", + CourseTitle: "Labor Law I"}, + {CourseNumber: "B615", + CourseTitle: "Land Use Controls"}, + {CourseNumber: "B661", + CourseTitle: "Law and Biomedical Advance"}, + {CourseNumber: "B658", + CourseTitle: "Law and Education: Advanced School Law"}, + {CourseNumber: "B658", + CourseTitle: "Law and Education: Higher Education"}, + {CourseNumber: "B658", + CourseTitle: "Law and Education: Leadership in Special Education"}, + {CourseNumber: "B658", + CourseTitle: "Law and Education: Legal Perspectives on Education"}, + {CourseNumber: "B658", + CourseTitle: "Law and Education: Workshop on Probs in Ed Leadership"}, + {CourseNumber: "B761", + CourseTitle: "Law and Philanthropy"}, + {CourseNumber: "B592", + CourseTitle: "Law and Political Theory: Institutional Analysis & Development"}, + {CourseNumber: "B730", + CourseTitle: "Law and Religion"}, + {CourseNumber: "B744", + CourseTitle: "Law and Social Psychology"}, + {CourseNumber: "B678", + CourseTitle: "Law and Sports"}, + {CourseNumber: "B674", + CourseTitle: "Law Journal: Indiana Journal of Global Legal Studies"}, + {CourseNumber: "B674", + CourseTitle: "Law Journal: Indiana Law Journal"}, + {CourseNumber: "B674", + CourseTitle: "Law Journal: Indiana Journal of Law and Social Equality"}, + {CourseNumber: "B685", + CourseTitle: "The Lawyer as a Business Executive"}, + {CourseNumber: "B539", + CourseTitle: "Lawyering in the Public Interest"}, + {CourseNumber: "B530", + CourseTitle: "Legal Discourse and Legal Writing for LLM and MCL Students"}, + {CourseNumber: "B582", + CourseTitle: "Legal Issues in Mergers and Acquisitions"}, + {CourseNumber: "B508", + CourseTitle: "Legal Operations"}, + {CourseNumber: "B614", + CourseTitle: "The Legal Profession (for 1Ls)"}, + {CourseNumber: "B614", + CourseTitle: "Legal Profession for Foreign Lawyers"}, + {CourseNumber: "B542", + CourseTitle: "Legal Research and Writing I"}, + {CourseNumber: "B543", + CourseTitle: "Legal Research and Writing II"}, + {CourseNumber: "B554", + CourseTitle: "Legislation"}, + {CourseNumber: "B564", + CourseTitle: "Litigation Drafting"}, + {CourseNumber: "B771", + CourseTitle: "Mediation"}, + {CourseNumber: "B771", + CourseTitle: "Mediation for LLMs"}, + {CourseNumber: "B582", + CourseTitle: "Mergers and Acquisitions"}, + {CourseNumber: "B508", + CourseTitle: "Modern Small Firm Practice"}, + {CourseNumber: "B623", + CourseTitle: "Negotiable Instruments"}, + {CourseNumber: "B620", + CourseTitle: "Negotiations"}, + {CourseNumber: "B537", + CourseTitle: "Nonprofit Law Clinic"}, + {CourseNumber: "B569", + CourseTitle: "Nonprofit Organizations"}, + {CourseNumber: "B681", + CourseTitle: "Partnership Tax"}, + {CourseNumber: "B743", + CourseTitle: "Patent Law"}, + {CourseNumber: "B559", + CourseTitle: "Patent Prosecution"}, + {CourseNumber: "B785", + CourseTitle: "Patent Trial Practice"}, + {CourseNumber: "B643", + CourseTitle: "Poverty Law"}, + {CourseNumber: "B564", + CourseTitle: "Pre-trial Litigation"}, + {CourseNumber: "B564", + CourseTitle: "Pre-trial Litigation: Courtroom Procedure"}, + {CourseNumber: "B564", + CourseTitle: "Pre-trial Litigation: Criminal Practice"}, + {CourseNumber: "B564", + CourseTitle: "Pre-trial Litigation: Depositions"}, + {CourseNumber: "B622", + CourseTitle: "Principles of Law and Economics"}, + {CourseNumber: "B514", + CourseTitle: "Private Practice Externship"}, + {CourseNumber: "B654", + CourseTitle: "Products Liability"}, + {CourseNumber: "B515", + CourseTitle: "Project Management"}, + {CourseNumber: "B521", + CourseTitle: "Property"}, + {CourseNumber: "B564", + CourseTitle: "Protection Order Litigation"}, + {CourseNumber: "B547", + CourseTitle: "Public Interest Internship Program"}, + {CourseNumber: "B675", + CourseTitle: "Public Natural Resources"}, + {CourseNumber: "B507", + CourseTitle: "Public Speaking"}, + {CourseNumber: "B756", + CourseTitle: "Race, American Society and the Law"}, + {CourseNumber: "B749", + CourseTitle: "Real Estate Finance"}, + {CourseNumber: "B775", + CourseTitle: "Real Estate Transactions"}, + {CourseNumber: "B603", + CourseTitle: "Remedies and Equity"}, + {CourseNumber: "B524", + CourseTitle: "Representing the State"}, + {CourseNumber: "B670", + CourseTitle: "Sales"}, + {CourseNumber: "B672", + CourseTitle: "Secured Transactions"}, + {CourseNumber: "B727", + CourseTitle: "Securities Regulation"}, + {CourseNumber: "B538", + CourseTitle: "Semester Public Interest Program"}, + {CourseNumber: "B649", + CourseTitle: "State and Local Tax"}, + {CourseNumber: "B519", + CourseTitle: "State Constitutional Law"}, + {CourseNumber: "B588", + CourseTitle: "Strategies in Critical Reading and Writing: Family Law"}, + {CourseNumber: "B751", + CourseTitle: "Survey of Intellectual Property"}, + {CourseNumber: "B526", + CourseTitle: "Tax Policy Colloquium"}, + {CourseNumber: "B736", + CourseTitle: "Topics in Tax: Strategic Business and Tax Planning"}, + {CourseNumber: "B531", + CourseTitle: "Torts"}, + {CourseNumber: "B758", + CourseTitle: "Trademark and Unfair Competition"}, + {CourseNumber: "B709", + CourseTitle: "Transactional Drafting"}, + {CourseNumber: "B709", + CourseTitle: "Transactional Drafting: Anatomy of a Deal"}, + {CourseNumber: "B709", + CourseTitle: "Transactional Drafting: Real Estate"}, + {CourseNumber: "B709", + CourseTitle: "Transactional Drafting: Tax"}, + {CourseNumber: "B722", + CourseTitle: "Trial Advocacy"}, + {CourseNumber: "B768", + CourseTitle: "Water Law"}, + {CourseNumber: "B550", + CourseTitle: "Wildlife Law"}, + {CourseNumber: "B645", + CourseTitle: "Wills & Trusts"}, + {CourseNumber: "L641", + CourseTitle: "Constitutionalism in the Middle East"}, + {CourseNumber: "L710", + CourseTitle: "Seminar in Law and Society: Immigration Law"}, + {CourseNumber: "L710", + CourseTitle: "Seminar in Law and Society: Work, Family, and the Law"}, + {CourseNumber: "L710", + CourseTitle: "Seminar in Law and Society: Law and Language"}, + {CourseNumber: "L782", + CourseTitle: "Seminar in Administrative Law: Lawyering in the Modern Administrative State"}, + {CourseNumber: "L766", + CourseTitle: "Seminar in Children and the Law: Reproduction and Childhood"}, + {CourseNumber: "L766", + CourseTitle: "Seminar in Children and the Law"}, + {CourseNumber: "L703", + CourseTitle: "Seminar in Commercial Law: Consumer Credit"}, + {CourseNumber: "L770", + CourseTitle: "Seminar in Comparative Inequality"}, + {CourseNumber: "L770", + CourseTitle: "Seminar in Comparative Law: Islamic Law"}, + {CourseNumber: "L736", + CourseTitle: "Seminar in Congress, the Presidency and the Courts"}, + {CourseNumber: "L799", + CourseTitle: "Seminar in Constitutional Law: The Courts, the Democratic Process, and the People"}, + {CourseNumber: "L684", + CourseTitle: "Seminar in Constitutional Design: Rights, Gender, and States of Emergency"}, + {CourseNumber: "L799", + CourseTitle: "Seminar in Constitutional Law"}, + {CourseNumber: "L799", + CourseTitle: "Seminar in Constitutional Law: First Amendment"}, + {CourseNumber: "L799", + CourseTitle: "Seminar in Constitutional Law: Second Amendment"}, + {CourseNumber: "L799", + CourseTitle: "Seminar in Constitutional Law: Sexuality, Reproduction, and the Constitution"}, + {CourseNumber: "L690", + CourseTitle: "Seminar in Corporate Law: Financial Regulation"}, + {CourseNumber: "L690", + CourseTitle: "Seminar in Corporate Law: Law and Practice Intellegence Age"}, + {CourseNumber: "L776", + CourseTitle: "Seminar in Criminal Law: Current Issues in Law and Procedure"}, + {CourseNumber: "L776", + CourseTitle: "Seminar in Criminal Law: Federal Sentencing"}, + {CourseNumber: "L776", + CourseTitle: "Seminar in Criminal Law: Punishment in Theory and Practice"}, + {CourseNumber: "L728", + CourseTitle: "Seminar in Globalization"}, + {CourseNumber: "L664", + CourseTitle: "Seminar in Information Privacy"}, + {CourseNumber: "L712", + CourseTitle: "Seminar in International Law: Drone Law"}, + {CourseNumber: "L730", + CourseTitle: "Seminar in Intellectual Property"}, + {CourseNumber: "L730", + CourseTitle: "Seminar in Intellectual Property: Data Law and Policy"}, + {CourseNumber: "L637", + CourseTitle: "Seminar in Introduction to Biotechnological Innovation"}, + {CourseNumber: "L797", + CourseTitle: "Seminar in Jurisprudence"}, + {CourseNumber: "L750", + CourseTitle: "Seminar in Law and Development"}, + {CourseNumber: "L713", + CourseTitle: "Seminar in Law and Economics"}, + {CourseNumber: "L796", + CourseTitle: "Seminar in Law and Medicine"}, + {CourseNumber: "L748", + CourseTitle: "Seminar in Law and Psychology of Crime, Culpability, and Punishment"}, + {CourseNumber: "L724", + CourseTitle: "Seminar in Law and Society of China"}, + {CourseNumber: "L773", + CourseTitle: "Seminar in Tax Policy"}, + {CourseNumber: "L636", + CourseTitle: "Seminar in Transnational Law"}, + {CourseNumber: "L639", + CourseTitle: "Seminar in the Supreme Court as an Institution"}, + {CourseNumber: "L714", + CourseTitle: "Seminar on Judicial Conduct"}, +} + type User struct { UID string `json:"uid"` FirstName string `json:"first_name"` @@ -36,15 +501,15 @@ type Section struct { } type Config struct { - NumberOfUsers int `json:"number_of_users"` - NumberOfSections int `json:"number_of_sections"` - NumberOfInstructors int `json:"number_of_instructors"` - PercentStatus map[string]int `json:"percent_status"` + NumberOfUsers int `json:"number_of_users"` + NumberOfSections int `json:"number_of_sections"` + NumberOfInstructors int `json:"number_of_instructors"` + PercentStatus map[string]int `json:"percent_status"` } var statuses = []string{"JD", "LLM", "MCL", "PHD", "SJD", "MLS", "SPEC", "MNR", "CERT"} -func GenerateUserData (config Config) { +func GenerateUserData(config Config) { // Build a weighted list of statuses weightedStatuses := make([]string, 0, 100) for status, pct := range config.PercentStatus { @@ -118,13 +583,13 @@ func GenerateSectionData(config Config) { sections := make([]Section, config.NumberOfSections) for i := range sections { - sections[i] = Section{ - SectionID: sectionIDs[i], - CourseNumber: courseNumbers[i], - Instructor: instructorNames[rand.Intn(len(instructorNames))], - CourseTitle: gofakeit.BookTitle(), - CourseType: course_type[rand.Intn(len(course_type))], - } + + my_section := course_information[rand.Intn(len(course_information))] + my_section.SectionID = sectionIDs[i] + my_section.Instructor = instructorNames[rand.Intn(len(instructorNames))] + my_section.CourseType = course_type[rand.Intn(len(course_type))] + sections[i] = my_section + } f, err := os.Create("sections.csv")