When you enroll in this course, you'll also be enrolled in this Specialization.
Learn new concepts from industry experts
Gain a foundational understanding of a subject or tool
Develop job-relevant skills with hands-on projects
Earn a shareable career certificate
There are 4 modules in this course
Building on the course Programming Fundamentals, this course will teach you how to write code by first planning what your program should do—an important approach for novice and professional programmers. You will learn how to compile and run your program, and then how to test and debug it. This course builds on the Seven Steps you have already learned and provides a framework for systematically testing for problems and fixing them, so you can find and fix problems efficiently.
In this module, you will learn to write code and do your first assignment in the Practice Programming Environment. You have practiced the first four steps of the Seven Steps in the previous course, and you will review them here before learning Step 5: Translating Your Algorithm to Code. Expert programmers spend most of their time planning before they begin writing code, and you will learn to do the same!
Translating the Intersection Algorithm to Code•5 minutes
Introduction to the Programming Environment•6 minutes
Editing Files with Emacs•8 minutes
More about Git•4 minutes
22 readings•Total 220 minutes
Planning•10 minutes
Report a problem with the course•10 minutes
Revisiting Step 1•10 minutes
Revisiting Step 2•10 minutes
Step 3: Generalizing Values•10 minutes
Step 3: Repetitions•10 minutes
Step 3: Conditional Behavior•10 minutes
Revisiting Step 4•10 minutes
Translation to Code•10 minutes
Translating Algorithm Components•10 minutes
Completed Rectangle Intersection Code•10 minutes
Top-down Design and Composability•10 minutes
Stars Example•10 minutes
Introduction to the Programming Environment•10 minutes
Instructions for Learners Upgrading from a Previous Course Version•10 minutes
Solutions to a Few Common Problems•10 minutes
UNIX basics•10 minutes
More UNIX Commands•10 minutes
Emacs•10 minutes
Git•10 minutes
[Optional Reference] Help me fix...•10 minutes
Next Steps•10 minutes
2 assignments•Total 60 minutes
Steps 1–4 Review•30 minutes
Step 5 Concepts•30 minutes
4 programming assignments•Total 80 minutes
Assignment 00_hello•10 minutes
Assignment 01_apple•10 minutes
Assignment 02_code1•30 minutes
Assignment 03_code2•30 minutes
Compiling and Running
Module 2•6 hours to complete
Module details
Now that you know how to plan an algorithm and translate it to code, you need to learn how to compile and run it! You will learn about the compiler, which takes the code you wrote and translates it into instructions a machine can execute, which you can then run. You will also learn about different options you can give the compiler, as well as different ways to run your program that give you debugging information.
Two skills that are crucial to good programming are testing—finding problems with your code, and debugging—fixing them. In this module you will learn systematic ways to identify problems in your code, as well as how to apply the scientific method to fix your program when you do find a bug.
Advice from a Duke Software Engineering Student: Don't Give Up!•2 minutes
15 readings•Total 150 minutes
Black Box Testing•10 minutes
Practical Tips for Designing Test Cases•10 minutes
White Box Testing•10 minutes
Generating Test Cases•10 minutes
Asserts•10 minutes
Code Review•10 minutes
Step 7: Debugging•10 minutes
The Scientific Method•10 minutes
Accept or Reject Your Hypothesis?•10 minutes
Intro to gdb•10 minutes
Getting Started with gdb•10 minutes
Investigating the State of Your Program•10 minutes
Controlling Execution•10 minutes
Watchpoints•10 minutes
Signals•10 minutes
3 assignments•Total 90 minutes
Testing•30 minutes
Debugging•30 minutes
gdb•30 minutes
3 programming assignments•Total 60 minutes
Assignment 08_testing•20 minutes
Assignment 09_testing2•20 minutes
Assignment 10_gdb•20 minutes
Project
Module 4•2 hours to complete
Module details
In this module you will begin the project you will complete over the course of the rest of the specialization. At the end of each course, you will write a piece of a program that will calculate the odds of different poker hands winning with a Monte Carlo simulation—a way to calculate complicated probabilities by generating random data.
What's included
2 videos2 readings2 programming assignments
Show info about module content
2 videos•Total 8 minutes
Introduction to the Poker Project•6 minutes
Poker Project Roadmap•2 minutes
2 readings•Total 20 minutes
Rules of Poker•10 minutes
Share your learning experience•10 minutes
2 programming assignments•Total 105 minutes
Assignment c2prj1_cards•60 minutes
Assignment c2prj2_testing•45 minutes
Earn a career certificate
Add this credential to your LinkedIn profile, resume, or CV. Share it on social media and in your performance review.
Instructors
Instructor ratings
Instructor ratings
We asked all learners to give feedback on our instructors based on the quality of their teaching style.
Duke University has about 13,000 undergraduate and graduate students and a world-class faculty helping to expand the frontiers of knowledge. The university has a strong commitment to applying knowledge in service to society, both near its North Carolina campus and around the world.
"To be able to take courses at my own pace and rhythm has been an amazing experience. I can learn whenever it fits my schedule and mood."
Jennifer J.
Learner since 2020
"I directly applied the concepts and skills I learned from my courses to an exciting new project at work."
Larry W.
Learner since 2021
"When I need courses on topics that my university doesn't offer, Coursera is one of the best places to go."
Chaitanya A.
"Learning isn't just about being better at your job: it's so much more than that. Coursera allows me to learn without limits."
Learner reviews
4.3
827 reviews
5 stars
65.45%
4 stars
16.78%
3 stars
5.07%
2 stars
4.83%
1 star
7.85%
Showing 3 of 827
N
NP
4·
Reviewed on Dec 24, 2020
This course looks boring at first sight but when you try to complete the course's assignment it is very challenging
S
SS
4·
Reviewed on Aug 9, 2020
grader is too confusing but the faculty managed to overcome it with their experience. I request the faculty to use alternative methods for ppe tool to not confuse students
K
KK
5·
Reviewed on May 30, 2020
Instructors and the instructors who moderate the forums are great. It is a bit different way to look at programming but it makes sense and I would recommend to anyone who wants to learn C
Will I receive a transcript from Duke University for completing this course?
No. Completion of a Coursera course does not earn you academic credit from Duke; therefore, Duke is not able to provide you with a university transcript. However, your electronic Certificate will be added to your Accomplishments page - from there, you can print your Certificate or add it to your LinkedIn profile.
When will I have access to the lectures and assignments?
To access the course materials, assignments and to earn a Certificate, you will need to purchase the Certificate experience when you enroll in a course. You can try a Free Trial instead, or apply for Financial Aid. The course may offer 'Full Course, No Certificate' instead. This option lets you see all course materials, submit required assessments, and get a final grade. This also means that you will not be able to purchase a Certificate experience.
What will I get if I subscribe to this Specialization?
When you enroll in the course, you get access to all of the courses in the Specialization, and you earn a certificate when you complete the work. Your electronic Certificate will be added to your Accomplishments page - from there, you can print your Certificate or add it to your LinkedIn profile.
Is financial aid available?
Yes. In select learning programs, you can apply for financial aid or a scholarship if you can’t afford the enrollment fee. If fin aid or scholarship is available for your learning program selection, you’ll find a link to apply on the description page.