Class Central is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Duke University

Designing Larger Python Programs for Data Science

Duke University via Coursera

Overview

Modern programs are complicated structures, with hundreds to thousands of lines of code, but how do you efficiently move from smaller programs to more robust, complicated programs? How do data scientists simulate the randomness of real world problems in their programs? What techniques and best practices can you leverage to design pieces of software that can efficiently handle large amounts of data? In this course from Duke University, Python users will learn about how to create larger, multi-functional programs that can handle more complex tasks. We don't recommend that this be the first Python course you take, as we'll be covering a decent amount of specific programming syntax. However, if you hold a prerequisite knowledge of basic algebra, Python programming, and the Pandas library, you should be able to complete the material in this course. In the first module, we’ll discuss top-down design for larger programs, including the programming syntax and techniques that are useful to stitch together larger programs. Then in the following modules, we’ll transition into discussing Monte Carlo simulations and introduce you to the Poker project, the larger program you’ll create by the end of the course. By the end of this course, you should be able to decompose a programming problem into manageable pieces, explain the basics of Monte Carlo Methods, and efficiently integrate smaller pieces of code into a larger complete program. This will prepare you to take the next step in your data scientist journey, creating complex programs that can more creatively simulate real-world problems.

Syllabus

  • Introduction to Larger Programs
    • This module, you’ll learn how to apply the concepts you’ve learned previously to analyze larger programs. Additionally, we’ll go through the process of program decomposition, to break up a complicated program into smaller steps that we can solve easier. After all of those pieces, we’ll put our pieces together in a programming assignment that combines a lot of the smaller programs we’ve created throughout the module.
  • Monte Carlo Methods and Introduction to the Poker Project
    • This Module, you’ll learn about Monte Carlo methods, which are a common technique we use to simulate a lot of possible outcomes. We’ll also introduce you to the Poker Project that you’ll be working on for the rest of the course. In this module we’ll focus on how we can write code to simulate different possible outcomes for a hand of poker, and the individual programming problems we’ll need to solve to make a complete poker simulation. You’ll create some of these smaller solutions in this module, and receive feedback on these individual pieces before we move onto synthesizing some of these parts together in the next module.
  • Writing Test Cases and Identifying Sources of Error
    • This module, you will learn about writing test cases and debugging in a Python program, and apply it to your poker project! Additionally we’ll move forward to the logical evaluation part of the poker project, where you’ll write the code that will allow your program to decide what a winning hand would be, and use some data science techniques to help clean up the data generated by Monte Carlo methods. Similarly to the last unit, you’ll write these individual parts of the program and get feedback on those, before we move on to the next unit, where we’ll synthesize all of these pieces into a complete poker hand simulation.
  • Integrating Larger Programs
    • This module, we’ll integrate all of the individual sections of Python code that we’ve written throughout the course into one larger program. This will likely require a bit of troubleshooting and forethought to get all of your previous bits of code working, but you will leverage the test cases and skills you learned in the previous module to accomplish this. We’ll also go over object references, a way that we can directly reference a piece of memory, to efficiently update the information that the various parts of your program will be using. After all of this, we’ll give feedback on your final poker project, and then we’ll ask you to do a short reflection on your poker project and the experience you had creating a larger program from its discrete components.

Taught by

Genevieve M. Lipp, Nick Eubank, Kyle Bradbury, and Andrew D. Hilton

Reviews

Start your review of Designing Larger Python Programs for Data Science

Never Stop Learning.

Get personalized course recommendations, track subjects and courses with reminders, and more.

Someone learning on their laptop while sitting on the floor.