We may earn an affiliate commission when you visit our partners.
Course image
Dr. Tim "Dr. T" Chamillard

This course is the third course in the specialization exploring both computational thinking and beginning C programming. Rather than trying to define computational thinking, we’ll just say it’s a problem-solving process that includes lots of different components. Most people have a better understanding of what beginning C programming means!

Read more

This course is the third course in the specialization exploring both computational thinking and beginning C programming. Rather than trying to define computational thinking, we’ll just say it’s a problem-solving process that includes lots of different components. Most people have a better understanding of what beginning C programming means!

This course assumes you have the prerequisite knowledge from the previous two courses in the specialization. You should make sure you have that knowledge, either by taking those previous courses or from personal experience, before tackling this course. The required prerequisite knowledge is listed below.

Prerequisite computational thinking knowledge: Algorithms and procedures and data collection, analysis, and representation

Prerequisite C knowledge: Data types, variables, constants; STEM computations; selection; and iteration (looping)

Throughout this course the computational thinking topics you'll explore are abstraction, which is deciding which details matter for the problem you're trying to solve, and problem decomposition, which is about breaking large problems into smaller sub-problems to handle complexity. For the programming topics, you'll continue building on your C knowledge by practicing using arrays, which let you store multiple values in a single variable, and strings, which are arrays of characters. You'll also learn how to implement functions, which are the mechanism we use for problem decomposition in our C programs.

Module 1: Learn about arrays as a way to store multiple values in a single variable

Module 2: Discover how we store and process strings (arrays of characters)

Module 3: Explore abstraction and problem decomposition

Module 4: Use functions to implement problem decomposition in your code

Enroll now

What's inside

Syllabus

Arrays
Strings
Abstraction and Problem Decomposition
Read more
Functions

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Develops computational thinking skills, which are core to problem-solving in many fields
Covers arrays, strings, abstraction, problem decomposition, and functions, which are fundamental concepts in computer science
Taught by Dr. Tim "Dr. T" Chamillard, who is recognized for his expertise in teaching computational thinking and C programming
Provides hands-on practice through exercises and projects, reinforcing the concepts learned
Assumes prerequisite knowledge from previous courses in the specialization, which may require additional study for learners new to the topic

Save this course

Save Abstraction, Problem Decomposition, and Functions to your list so you can find it easily later:
Save

Reviews summary

Well-received course in abstraction

Learners say that Abstraction, Problem Decomposition, and Functions is a well-received course for those who want to learn the fundamentals of abstraction and functions. The course is engaging and makes the material easy to understand. The assignments are helpful and the instructor is knowledgeable and supportive.
The instructor is knowledgeable and supportive.
"The instructor is very knowledgeable and supportive."
"The instructor was always available to answer my questions and provide feedback."
"The instructor is really passionate about the subject and it shows in his teaching."
Helpful exercises to master abstraction.
"The assignments are helpful and make the material easy to understand."
"I found the assignments to be very helpful in solidifying my understanding of the material."
"The assignments were challenging but fair, and they helped me to learn a lot."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Abstraction, Problem Decomposition, and Functions with these activities:
Read 'Head First C Programming' by Eric Freeman and Elisabeth Robson
Get a deeper understanding of C programming concepts and techniques by reading this highly-rated book. It provides a practical and engaging approach to learning C.
Show steps
  • Purchase or borrow a copy of the book.
  • Dedicate time each week to read and understand the material.
  • Complete the exercises and activities provided in the book to reinforce your learning.
Review C Programming Basics
Revisit the basics of C programming, such as data types, variables, and control flow, to strengthen your foundation before diving into the C programming topics covered in this course.
Show steps
  • Review an online tutorial or resource on C programming basics.
  • Complete a few practice exercises or coding challenges to reinforce your understanding.
Compile a Glossary of Computational Thinking Terms
Create a comprehensive glossary of key computational thinking terms and their definitions. This will help you solidify your understanding of the concepts and provide a valuable reference for future study.
Browse courses on Computational Thinking
Show steps
  • Review the course materials and identify key computational thinking terms.
  • Research and gather definitions for each term from reliable sources.
  • Organize the terms and definitions into a structured glossary.
Five other activities
Expand to see all activities and additional details
Show all eight activities
Discuss Problem Solving Strategies
Engage with your peers to exchange ideas and discuss different strategies for solving problems. This will broaden your perspective and expose you to alternative approaches.
Browse courses on Problem Solving
Show steps
  • Join or form a study group with other students taking the course.
  • Discuss a specific problem or challenge you encountered in the course material.
  • Share and evaluate different strategies for solving the problem.
Practice Data Manipulation with Arrays
Get hands-on experience with manipulating data using arrays. This will solidify your understanding of how arrays work and how to use them effectively in your C programs.
Browse courses on Arrays
Show steps
  • Find online coding exercises or challenges that focus on using arrays.
  • Practice implementing different array operations, such as accessing elements, storing values, and iterating through arrays.
Implement a Simple Function in C
Put your knowledge of functions into practice by creating your own function in C. This will deepen your understanding of how functions work and how to use them to break down complex problems.
Browse courses on Functions
Show steps
  • Identify a problem or task that can be solved using a function.
  • Design the function's interface, including its name, parameters, and return type.
  • Implement the function's logic in C.
  • Test the function with different input values to ensure it works correctly.
Create a Visual Guide to Data Structures
Enhance your understanding of data structures by creating a visual guide that illustrates their properties and relationships. This will help you visualize and retain the concepts more effectively.
Browse courses on Data Structures
Show steps
  • Research and gather information about different data structures.
  • Design and create visual representations for each data structure, highlighting their key features and operations.
  • Organize and present your visual guide in a clear and concise manner.
Mentor a Beginner C Programmer
Help others understand the fundamentals of C programming by mentoring them. This will deepen your own understanding and reinforce your knowledge as you explain concepts to others.
Browse courses on Mentorship
Show steps
  • Identify someone who is new to C programming and is looking for guidance.
  • Schedule regular sessions to provide support and answer questions.
  • Provide constructive feedback and encouragement to help the mentee progress.

Career center

Learners who complete Abstraction, Problem Decomposition, and Functions will develop knowledge and skills that may be useful to these careers:
Software Developer
Software developers use their programming skills to design, develop, and test software applications. The programming skills you will gain from this course, such as problem decomposition and function implementation, will be valuable in this role.
Systems Engineer
Systems engineers are responsible for designing, developing, and maintaining complex systems. The programming and problem-solving skills you will gain from this course will be valuable in this role.
Software Engineer
Software engineers design, develop, and maintain software systems. This course will provide you with many of the in-demand hard skills required for software engineering, including proficiency in programming languages, data structures, and algorithms.
Quality Assurance Analyst
Quality assurance analysts are responsible for testing software to ensure that it meets quality standards. The programming and problem-solving skills you will gain from this course will be valuable in this role.
Data Analyst
The ability to organize and interpret data is crucial for a data analyst. This course will give you a good foundation in data collection, analysis, and visualization, which will help you with your data analysis. Data analysts transform raw data into actionable insights that can help improve business operations.
Systems Analyst
This course is an excellent way to gain the skills needed for a career as a systems analyst. Systems analysts assess business needs to determine how they will be met using information technology solutions. The principles of data collection and analysis taught in this course will be invaluable.
Web Developer
Web developers design and develop websites and web applications. This course will provide you with a solid foundation in programming, including HTML, CSS, and JavaScript, as well as problem-solving and debugging skills that are essential for web development.
Data Scientist
The skills you will gain from this course, such as data collection, analysis, and visualization, will be valuable for a career as a data scientist. Data scientists use data to solve business problems and make informed decisions.
Information Technology Manager
This course will provide you with the knowledge and skills needed to succeed as an information technology manager, who is responsible for planning, implementing, and maintaining an organization's information technology systems.
Database Administrator
A database administrator is responsible for ensuring the proper functioning of an organization's database systems. This course can help you gain the knowledge and skills needed for this role, such as data modeling, database design, and performance tuning.
Project Manager
Project managers are responsible for planning, executing, and closing projects. This course will provide you with the skills needed for this role, such as project planning, risk management, and communication.
Business Analyst
A business analyst helps organizations improve their business operations. This course can provide you with the skills needed for this role, such as process analysis, problem solving, and communication.
Information Security Analyst
You'll gain a solid foundation in computer programming and problem solving through this course, which will be useful in the field of information security analysis. Information security analysts are responsible for protecting computer systems and networks from malicious attacks.
Computer Programmer
This specialization can help you succeed as a computer programmer because it provides a solid foundation in programming. A computer programmer's responsibilities include creating, maintaining, and testing software programs, and requires expertise in programming languages and software development tools.
Computer Systems Analyst
Analyzing business operations is made easier by the data collection and evaluation methods taught in this course. They'll be useful in resolving systems issues and giving recommendations for business process improvements. Computer systems analysts help plan, build, and maintain information systems with their expertise in both business operations and computer technology.

Reading list

We've selected 15 books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Abstraction, Problem Decomposition, and Functions.
The classic, definitive reference text for the C programming language, written by its original creators.
This advanced textbook provides in-depth coverage of data structures and algorithms. Although the focus is in C, readers should be able to transfer these concepts to their work in other languages. Readers should have a strong prerequisite knowledge of data science.
A classic in software engineering, this book provides practical guidance for programmers of all levels and is language agnostic.
This textbook provides a survey of computer systems from a programmer's perspective, focusing on topics such as computer architecture, operating systems, and networking.
Focusing primarily on software design, this book provides language-agnostic principles that can be applied in any programming environment, including C.
Another classic in software development, this text provides insightful guidance into how to refactor existing code for maintainability and quality.
This textbook is particularly useful for readers who need in-depth coverage of algorithms and data structures. The Java focus of this text may limit its practical use as a reference for C programmers.
This advanced textbook is often a required textbook for undergraduate and graduate level algorithms courses at academic institutions. The focus is primarily on algorithms.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to Abstraction, Problem Decomposition, and Functions.
Simulation, Algorithm Analysis, and Pointers
Most relevant
Data Analysis and Representation, Selection and Iteration
Most relevant
Computational Thinking and Big Data
Most relevant
Algorithms, Data Collection, and Starting to Code
Most relevant
Problem Solving Using Computational Thinking
Most relevant
Problem Solving, Python Programming, and Video Games
Most relevant
Programming for Data Science
More C# Programming and Unity
More C++ Programming and Unreal
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser