Micah D. Cochran, MSCS
-
Birmingham,
Alabama,
USA
- micahcochran
- in/micahcochran
0009-0001-2285-9962
- mdcochra@uab.edu
- 256-394-2304
- contact info (vCard)
Who Am I
I am software development professional available for hire. Prior to this I was 16 years experience in land development law and Geographic Information Systems (GIS) working for a municipal Public Works Department. My interests include Geographic Information Systems, Natural Language Processing, and the Semantic Web.
Work Experience
Informatics Analyst III
- Sep. 2021–Apr. 2023
-
University of Alabama at Birmingham, Department of Biomendical Informatics and Data Science, Birmingham, AL, USA
- Duties: Work for Dr. John Obsborne's Natural Language Processng lab
Duties (expand)
IT Student Worker
- Sep. 2021–Apr. 2023
-
University of Alabama at Birmingham, Computer Science Department, Birmingham, AL, USA
- Duties: Installed and updated software on lab computers. Set up lab computers for PhD students. Took inventory of computers and phones. Created diagrams and publications. Performed basic computer diagnostics.
Duties (expand)
Teaching Assistant
Sep. 2022–Dec. 2022
University of Alabama at Birmingham, Computer Science Department, Birmingham, AL, USA
- Assisted the class CS 221 Web Development, which covered topics HTML, CSS, and JavaScript.
- Held labs and office hours to help students with assignments.
- Graded student assignments.
- Coordinated with the professor on assignments and grading.
Duties (expand)
Geospatial Services Contractor
Aug. 2021–May 2022
Redrew voting districts based on 2020 Census.
GIS Administrator/Coordinator
Feb. 2005–Aug. 2021
Accomplishments:
- Migrated many maps from paper to online interactive maps.
- Programmed a Python script that automated routine GIS data requests reducing the processing time by 1 hour; a script that created a combined municipal limits layer from multiple GIS source; and software which would use PDF applications to create agendas and notices.
- Migrated applications from paper to electronic PDFs. Moved site plan review to digital review and moved to digital document signing.
- Served as liaison to FEMA during declared disasters in 2011 and 2014.
- Led a multi-department/agency GIS Consortium that contracted three aerial photography flights and Web GIS services.
- Regular duties included reviewing civil plans based on city regulations and communicating with developers about regulations, advising customers about how they could modify their plans to comply with local development laws, creating and maintaining Geospatial data, creating and maintaining cartography derived from the data, and distribution of GIS data.
- Led a multi-department/agency Consortium contracting three countywide aerial photography flights.
- See GIS Map Portfolio for map examples.
Education
M.S. Computer Science - University of Alabama at Birmingham
4.0 GPA
Aug. 2021 - Apr. 2023, Birmingham, AL, USA
Diploma can be digitally verified (CeDID: 23YV-U4XM-MWNN
(the same code appears in the upper left hand corner of the diploma) and using the first two letters in my name: MI
)
B.A. Geography - University of North Alabama
Aug. 2001 - Dec. 2004, Florence, AL, USA
Minor: Computer Science
Certificate in Geographic Information Systems - University of North Alabama
Dec. 2004, Florence, AL, USA
Technical Skills
- Language: Python, Shell [bash|fish], Java, , JavaScript, C, Racket
- Database Storage: Oracle Database,MongoDB, RDF, SQLite
- Technology: SQL, Flask, MPI, OpenMP, SPARQL
- Operating Systems: Linux (multiple distributions) / Windows
- IDEs: Visual Studio Code, vim, Intelij IDEA, Jupyter Notebook, PyCharm, Eclipse,
- Tools: git / GitHub / GitLab, Docker, Amazon Web Services, pandoc, Vagrant
- GIS Software: ESRI ArcGIS Desktop, QGIS
Research
Works
Natural Language Processing Software
- O’Leary, T., Cochran, M., Negrete, H., Lindeman, B., & Osborne, J. D. (2024). Adrenal Lesion Incidentaloma Named Entity Recognition Pipeline (v1.1). Zenodo. https://doi.org/10.5281/zenodo.13287865
Geospatial Software
- Jeff Whitaker, Alan D. Snow, Micah Cochran, Charles Karney, George Ouzounoudis, Justin Dearing, Jos de Kloe, Heitor, Filipe, Ryan May, Mikhail Itkin, Nick Eubank, Michael Dunphy, Matthew Brett, Marco Aurélio da Costa, Jakob de Maeyer, Christoph Gohlke, Chris Willoughby, Chris Barker, … Bas Couwenberg. (2019). jswhit/pyproj: version 2.0.2 release (v2.0.2). Zenodo. https://doi.org/10.5281/zenodo.2592233
- Kelsey Jordahl, Joris Van den Bossche, Jacob Wasserman, James McBride, Jeffrey Gerard, Jeff Tratner, Matthew Perry, Carson Farmer, Micah Cochran, Sean Gillies, Matt Bartos, Lucas Culbertson, Nick Eubank, maxalbert, Martin Fleischmann, Geir Arne Hjelle, Dani Arribas-Bel, Christopher Ren, Sergio Rey, … John Trengrove. (2019). geopandas/geopandas: v0.4.1 (v0.4.1). Zenodo. https://doi.org/10.5281/zenodo.2585849
See also my ORCID profile.
Projects
Zoning Ordinance Question Answering
- Oct.–Dec. 2022
- The software answered natural language questions about Zoning Ordinance laws. The Question Answering System recognized the question matched it to a template, finds key words, and puts key words into the identified SPARQL query. The queries are executed on a Zoning Ordinance Knowledge Graph to obtain the answer. This was a team project for CS 662 Natural Language Processing. Python
Legal Text Website
- Jun. 2022–Aug. 2022
- Present legal codes in a more usable website. Scraped the Constitution of Alabama using the Beautiful Soup library. Technologies used in this project include: Python, Flask, and MongoDB.
Agricultural Drone Dashboard
- Oct. 2021–Dec. 2021
- Led a four (4) person team that built software for agricultural drone scanning. The software simulated a flight on the screen and also flew a physical drone. The team explored the software development process with use cases, state charts, and implementing the software in Java and JavaFX. OOP patterns were also incorporated into this project. This was the final project for the CS 520 Software Engineering class.
recipe-crawler
- June 2021–present
- A Python web crawler for recipes in HTML https://schema.org/Recipe (Microdata/JSON-LD), which output cookbooks in JSON format for testing recipe software. Uses scrape-schema-recipe library for parsing recipes and the Python library Beautiful Soup for parsing anchor tags.
- I programmed the software and maintain the repository.
request_builder.py
- 2020–Aug. 2021
- Command line software that generates agendas and notices using Word Document templates from applicant requests (PDF files). The Python software used the PDF form data to fill templates of agendas and public notices. Templates were tailored to City’s processes and messaging.
- Programmer and user of software.
scrape-schema-recipe
- 2018–present
- Scrapes recipes from HTML https://schema.org/Recipe (Microdata/JSON-LD) into Python dictionaries. This is an open source library that allows others to use this to build software from this tool.
- Programmed the software and maintain the repository.
pyproj
- 2016–2019
- Python library for cartographic projection and spatial transformation that wraps the PROJ C library using Cython to interface the then C library with Python.
- Provided support for end users (programmers), wrote documentation, contributed fixes, wrote unit tests, reviewed user contributions, and merged contributions.
combined_municipal_limits_geoprocessing
- 2014–2016
- A Python ETL script to combine GIS municipal limit data from four (4) different sources. The data had two (2) projections and four (4) schemas. The script was to create one layer with one projection and one schema. The result was a single layer of municipal limits that covered Limestone County, AL.
- Programmer and user.
GIS Maps
- 2004–2022
- 18 years of creating and maintaining GIS data and cartographic products.
(for other project and miscellaneous open source contributions see GitHub: micahcochran)
Select Coursework
CS 501 – Programming Languages
CS501 is a programming language overview course. The course will discuss computability, lexing, parsing, type systems, and ways to formalize a language's semantics. The course will introduce students to major programming paradigms, such as functional programming and logic programming, and their realization in programming languages. Students will solve problems using different paradigms and study the impact on program design and implementation. The course enables students to assess strengths and weaknesses of different languages for problem solving.
Primary programming language: Racket
CS 520 – Software Engineering
Design and implementation of large-scale software systems, software development life cycle, software requirements and specifications, software design and implementation, verification and validation, project management and team-oriented software development.
Primary programming language: Java
CS 532 – Systems Programming
Unix architecture and internals with an emphasis on Linux, shell scripting, distributions of Linux for various computing platforms including large and desktop computers, and embedded computing devices, introduction to the C programming language, systems programming in C covering signals and process control, networking, I/O, concurrency and synchronization, memory allocation, threads, debugging, library development and usage.
Primary programming language: C
CS 621 – Advance Web Application Development
Introduction to web application design and development. Includes traditional web applications utilizing server-side scripting as well as client/server platforms. Covers responsive design for both mobile and desktop users, as well as hands on server provisioning and configuration. Other topics include web security problems and practices, authentication, database access, application deployment and Web API design, such as REpresentational State Transfer (REST).
Primary programming languages: JavaScript and Python
CS 632 – Parallel Computing
Overview of parallel computing hardware, architectures, & programming paradigms; parallel programming using MPI, Pthreads, and OpenMP; design, development, and analysis of parallel algorithms for matrix computations, FFTs, and Sorting.
Primary programming language: C
CS 633 – Cloud Computing
Introduction to cloud computing architectures and programming paradigms. Theoretical and practical aspects of cloud programming and problem-solving involving compute, storage and network virtualization. Design, development, analysis, and evaluation of solutions in cloud computing space including machine and container virtualization technologies.
CS 652 – Advanced Algorithms and Data Structures
The design and analysis of fundamental algorithms that underpin many fields of importance ranging from data science, business intelligence, finance and cyber security to bioinformatics. Algorithms to be covered include dynamic programming, greedy technique, linear programming, network flow, sequence matching, search and alignment, randomized algorithms, page ranking, data compression, and quantum algorithms. Both time and space complexity of the algorithms are analyzed.
Primary programming language: Java
CS 662 – Natural Language Processing
This course provides a broad introduction to Natural Language Processing (Computational Linguistics) and its applications. Topics covered include language modeling with neural networks, sequence labelling algorithms (segmentation, chunking, tokenization, part-of-speech tagging and others ), syntactic and dependency parsing, vector-based representation models and using Deep Learning in NLP applications. Some application areas covered include information extraction and named entity recognition, semantic role labelling, word sense disambiguation, text generation, information retrieval, question answering, machine translation and other areas as time permits. There will be a focus on Deep Learning approaches using Tensorflow, PyTorch and keras for a major student project. Jupyter Notebooks will be used for assignments.
Primary programming language: Python
For a complete list of courses with descriptions, see the course descriptions.
General Skills
- Creating and maintaining website content.
- phone and email customer service for the general public and internal employees
- Designing maps, posters, pamphlets, and forms for use by internal and external audiences and the general public.
- procuring services through an RFI/RFP process
- reviewing documents for regulatory compliance
- training general public over the phone and in person to use online maps
Volunteer Experiences
Athens Pride Coalition
- Co-Founder (2016–Mar. 2020)
- Set up organizational structure. Held adult socials. Promoted group.
- Mentor (2018–Mar. 2020)
- Served as a mentor for a youth support group (14–18 years old) of gender and sexual minorities from diverse backgrounds in Athens, Alabama.
- Prepared home cooked meals for the youth and the support staff.
- Co-Founder (2016–Mar. 2020)
Recently, I rediscovered my enjoyment of listening to Heavy Metal music.