Interacting with the System and Managing Memory
Keep adding new skills with 10,000+ programs for $239 (usually $399). Save now.
Interacting with the System and Managing Memory
This course is part of Introductory C Programming Specialization
25,504 already enrolled
Included with
Learn more
Ask Coursera
180 reviews
180 reviews
Skills you'll gain
Tools you'll learn
Details to know
12 assignments
See how employees at top companies are mastering in-demand skills
Build your subject-matter expertise
- 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
The final course in the specialization Introduction to Programming in C will teach you powerful new programming techniques for interacting with the user and the system and dynamically allocating memory. You will learn more sophisticated uses for pointers, such as strings and multidimensional arrays, as well as how to write programs that read and write files and take input from the user. Learning about dynamic memory allocation will allow your programs to perform complex tasks that will be applied in the final part of the specialization project: a Monte Carlo simulation for calculating poker hand probabilities.
So far, our programs have had a rather limited interaction with the user or rest of the system, printing some results to standard output (typically to the terminal). Now that we have learned about topics such as strings and arrays, we are ready to learn how to write a program that takes input from the user, takes arguments on the command line, accesses files, and does many other things we typically think of real programs as doing.
What's included
5 videos15 readings5 assignments4 programming assignments
5 videosβ’Total 16 minutes
- Why We Need Interactivity and to Manage Memoryβ’2 minutes
- Reading a File with fgetcβ’4 minutes
- Reading a File with fgetsβ’5 minutes
- Writing to a Fileβ’2 minutes
- Closing a Fileβ’3 minutes
15 readingsβ’Total 145 minutes
- The Practice Programming Environmentβ’10 minutes
- Report a problem with the courseβ’5 minutes
- Introduction to the Operating Systemβ’10 minutes
- Errors from System Callsβ’10 minutes
- Command Line Argumentsβ’10 minutes
- Complex Option Processingβ’10 minutes
- The Environment Pointerβ’10 minutes
- Process Creationβ’10 minutes
- Opening a Fileβ’10 minutes
- Reading a Fileβ’10 minutes
- Reading a File with fgetsβ’10 minutes
- Reading a File with freadβ’10 minutes
- Writing to Filesβ’10 minutes
- Closing Filesβ’10 minutes
- Other Interactionsβ’10 minutes
5 assignmentsβ’Total 150 minutes
- The Operating Systemβ’30 minutes
- Command Line Arguments and Process Creationβ’30 minutes
- Opening Files and fgetcβ’30 minutes
- Reading encryption.cβ’30 minutes
- Writing and Closing Filesβ’30 minutes
4 programming assignmentsβ’Total 120 minutes
- Assignment 24_read_arr3β’30 minutes
- Assignment 25_break_encrβ’30 minutes
- Assignment 26_tests_matrix_inputβ’30 minutes
- Assignment 27_matrix_inputβ’30 minutes
So far, most of the memory we have used has been located on the stack. Dynamic memory allocation gives a programmer much more flexibility, in that it allows you to request a specific amount memory to be allocated on the heap, so that it will not disappear with the stack frame of the calling function.
What's included
7 videos18 readings5 assignments4 programming assignments
7 videosβ’Total 24 minutes
- Simple Call to mallocβ’2 minutes
- Mechanics of freeβ’3 minutes
- Code with a Memory Leakβ’3 minutes
- Three Common Problems When Using freeβ’2 minutes
- Call to reallocβ’4 minutes
- Reading a File with getlineβ’6 minutes
- Combining getline and reallocβ’4 minutes
18 readingsβ’Total 166 minutes
- Motivation for Dynamic Allocationβ’10 minutes
- mallocβ’10 minutes
- Fixing initArrayβ’10 minutes
- More Complex Structuresβ’10 minutes
- Shallow vs. Deep Copyingβ’10 minutes
- freeβ’10 minutes
- Memory Leaksβ’10 minutes
- A Dynamic Memory Allocation Analogyβ’10 minutes
- Common Problems with freeβ’10 minutes
- reallocβ’10 minutes
- getlineβ’10 minutes
- Valgrind's Memcheckβ’10 minutes
- Uninitialized Valuesβ’10 minutes
- Invalid Reads and Writesβ’10 minutes
- Valgrind with GDBβ’10 minutes
- Dynamic Allocation Issuesβ’10 minutes
- memcheck.hβ’3 minutes
- Other Valgrind Toolsβ’3 minutes
5 assignmentsβ’Total 140 minutes
- mallocβ’30 minutes
- freeβ’30 minutes
- reallocβ’30 minutes
- getlineβ’30 minutes
- Valgrind's Memcheckβ’20 minutes
4 programming assignmentsβ’Total 120 minutes
- Assignment 28_fix_vg_encrβ’30 minutes
- Assignment 29_outnameβ’30 minutes
- Assignment 30_sort_linesβ’30 minutes
- Assignment 31_minesweeperβ’30 minutes
So far, we have focused exclusively on programming in the smallβdesigning the algorithm for a small-sized task, implementing it, testing it, and debugging it. This module discusses three main differences that "real" programs exhibit. 1) They tend to be much larger than those we have written. 2) More than one person works on them, sometimes teams of hundreds to thousands. 3) Real software has a long life-span during which it must be maintained. Now that you have an understanding of the basics of programming in the small, we are ready to begin learning about programming in the large!
What's included
2 videos20 readings2 assignments3 programming assignments
2 videosβ’Total 6 minutes
- Introductionβ’1 minute
- Roster Planningβ’6 minutes
20 readingsβ’Total 120 minutes
- Analogy to Writingβ’10 minutes
- Abstractionβ’3 minutes
- The Seven-Item Limitβ’10 minutes
- Hierarchical Abstractionβ’10 minutes
- Readabilityβ’2 minutes
- Function Sizeβ’2 minutes
- Namingβ’4 minutes
- Formattingβ’10 minutes
- Commenting and Documentationβ’10 minutes
- Team Considerationsβ’5 minutes
- Gitβ’2 minutes
- Past Versionsβ’5 minutes
- Collaborationβ’3 minutes
- Multiple Versions of the Presentβ’5 minutes
- Read Moreβ’2 minutes
- Problem Descriptionβ’5 minutes
- Planning the High-Level Algorithmβ’7 minutes
- Writing and Testing readInputβ’10 minutes
- Finishing the Programβ’10 minutes
- Even Larger Programsβ’5 minutes
2 assignmentsβ’Total 60 minutes
- Abstractionβ’30 minutes
- Readabilityβ’30 minutes
3 programming assignmentsβ’Total 90 minutes
- Assignment 32_kvsβ’30 minutes
- Assignment 33_countsβ’30 minutes
- Assignment 34_put_togetherβ’30 minutes
In this module, you will complete the Poker Project! Now that you know about dynamic memory allocation, user input, and how to program in the large, you can write the final parts of the program. You will write code to read in a file with a hand of cards and code to choose unknown cards from a shuffled deck. As you program with more sophisticated data structures, the importance of drawing good pictures will increase. Happy programming!
What's included
1 video1 reading3 programming assignments
1 videoβ’Total 4 minutes
- Poker Project: Final Partβ’4 minutes
1 readingβ’Total 10 minutes
- Share your learning experienceβ’10 minutes
3 programming assignmentsβ’Total 240 minutes
- Assignment c4prj1_deckβ’60 minutes
- Assignment c4prj2_inputβ’90 minutes
- Assignment c4prj3_finishβ’90 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
Offered by
Explore more from Software Development
- Status: Free TrialD
Dartmouth College
Course
- Status: Free Trial
Course
- Status: Free TrialD
Duke University
Course
- Status: Free TrialD
Dartmouth College
Course
Why people choose Coursera for their career
Learner reviews
- 5 stars
64.64%
- 4 stars
15.46%
- 3 stars
8.28%
- 2 stars
1.65%
- 1 star
9.94%
Showing 3 of 180
Reviewed on Aug 2, 2019
i really loved the style of that course. the challenging assignments, depending more on reading and the continuous support through the discussion forums. i hope you make another extension to c++
Reviewed on Jun 13, 2021
It's very good for entering the world of progromming!
Reviewed on Mar 13, 2021
Valuable course, recommend for a beginner who wants to learn coding in c if this course has more materials and more detailed explanation it should be 5 stars.
Frequently asked questions
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.
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.
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.
More questions
Financial aid available,
