VOOZH about

URL: https://www.coursera.org/learn/interacting-system-managing-memory

⇱ Interacting with the System and Managing Memory | Coursera


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

25,504 already enrolled

Included with

β€’

Learn more

Ask Coursera

Gain insight into a topic and learn the fundamentals.
4.3

180 reviews

Beginner level
No prior experience required
Flexible schedule
2 weeks at 10 hours a week
Learn at your own pace
91%
Most learners liked this course

Gain insight into a topic and learn the fundamentals.
4.3

180 reviews

Beginner level
No prior experience required
Flexible schedule
2 weeks at 10 hours a week
Learn at your own pace
91%
Most learners liked this course

Details to know

Shareable certificate

Add to your LinkedIn profile

Assessments

12 assignments

Taught in English

Build your subject-matter expertise

This course is part of the Introductory C Programming Specialization
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

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

Instructor ratings
4.4 (29 ratings)
Duke University
19 Coursesβ€’1,145,038 learners

Explore more from Software Development

Why people choose Coursera for their career

πŸ‘ Image

Felipe M.

Learner since 2018
"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."
πŸ‘ Image

Jennifer J.

Learner since 2020
"I directly applied the concepts and skills I learned from my courses to an exciting new project at work."
πŸ‘ Image

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."
πŸ‘ Image

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

  • 5 stars

    64.64%

  • 4 stars

    15.46%

  • 3 stars

    8.28%

  • 2 stars

    1.65%

  • 1 star

    9.94%

Showing 3 of 180

OE
Β·

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++

DX
Β·

Reviewed on Jun 13, 2021

It's very good for entering the world of progromming!

NP
Β·

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.

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.

Financial aid available,