Apr 27, 2024  
2023-2024 Graduate Academic Catalog-June Update 
    
2023-2024 Graduate Academic Catalog-June Update [ARCHIVED CATALOG]

Add to Portfolio (opens a new window)

CSC 5120 - Software Development for Machine Learning

4 lecture hours 0 lab hours 4 credits
Course Description
The objective of this course is to develop practical software engineering skills combined with application of data structures and algorithms concepts to enable students to implement non-trivial software projects. This course is designed for students who have some programming experience but have not had comprehensive exposure to developing intermediate-sized programs composed of multiple modules; implementing and analyzing data structures and basic algorithms; and other related computing topics. Upon completion of the course, students will be able to use Python and related libraries to implement non-trivial software for data and computational challenges that will prepare them to succeed in data science and machine learning coursework as well as other programming classes. (prereq: CSC 1110 or CSC 1310 or instructor consent, open to qualified undergraduates)
Course Learning Outcomes
Upon successful completion of this course, the student will be able to:
  • Design and implement software that uses logic and looping to solve problems
  • Implement logic for reading, parsing, and writing common text file formats
  • Use data structures such as strings, lists, sets, dictionaries, and tuples to solve data processing and algorithmic problems
  • Write software organized into multiple classes and modules
  • Use a version control tool (i.e., Git) to share and collaborate on software development projects
  • Document the implementation of software systems
  • Write automated tests for pre-conditions and post-conditions using a testing framework
  • Use recursion to solve a given problem
  • Design and implement linked lists and trees to store and access data and state information
  • Implement and apply tree algorithms to solving search and planning problems
  • Use exact tracing to quantify and predict the runtime of a given algorithm
  • Apply the concepts of asymptotic complexity to accurately characterize the Big-O of a given algorithm

Prerequisites by Topic
  • Programming experience with a high-level language

Course Topics
  • Introduction to procedural and object-oriented Python 
  • Python data types: strings, lists, sets, dictionaries, and tuples  
  • Loading and manipulating data stored in tabular or semi-structured text files 
  • Implementing and using classes in Python
  • Interactions with Git repositories 
  • Writing tests with assertion statements and the Python unittest library
  • Linked lists and trees 
  • Recursion 
  • Search and planning problems in AI such as playing games
  • Applications of tree data structures and algorithms to solve search and planning problems

Coordinator
Dr. Jonathon Magaña



Add to Portfolio (opens a new window)