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

OpenLearning

CS101: Problem Solving with Automation and Storage

via OpenLearning

Overview

About CS101

Welcome to CS101, a computer science program launched by OpenLearning in 2021 with its mission to enable working professionals to gain in-depth knowledge and skills in computer science. CS101 is designed by industry and for industry, bringing together leading technology companies, computer scientists and learning designers to create a one-of-a-kind online program that makes computer science accessible to everyone.

Designed by OpenLearning Founder and CTO, David Collien, and in collaboration with Computer Scientists, Software Engineers and Learning Designers, CS101 is built on OpenLearning’s lifelong learning platform and social-constructivist approach to deliver a transformative learning experience.

Student Testimonials

"CS101 is fantastic for those wanting to understand how computers and programming languages work with no prior technical knowledge. The learning content is fun and engaging. I loved that there were no ‘tests’ but learning through application. At the end of the journey you can see your portfolio of work which is empowering. Who knew programming could be fun? Highly recommend for those wanting to build their technical skills and knowledge."

Ashleigh W. , CS101 Learner

Syllabus

  • Identify and appreciate the qualities of high quality programming code: - Upholding good style and producing code of good clarity and design quality - Proposing improvements to other’s code design and clarity in code reviews - Adherence to, and refinement of a style guide - Contributing to the discussion of what good code style, and what undesirable “hacky” each look like
  • Value the writing of functional software for both its social utility and as an expression of creative skill: - Identifying opportunities to automate tasks, or solve personal or professional problems by writing programming code - Explore creative expression by building programs with a playful or artistic purpose - Critique personal and professional ethical considerations when writing software
  • Cultivate a scientific mindset for solving problems using code: - Follow a scientific approach to designing and choosing algorithms - Apply a methodical, optimistic, persistent, and resilient strategy to debugging, troubleshooting, and solving problems - Produce a strategy for exploring, questioning, and experimenting with a problem space scientifically and skeptically - Probe a problem space to prioritise exploration, and reverse-engineer “black boxes” using a scientific approach
  • Identify and appreciate good programming practices: - Appreciation for writing unit tests - Exploring the practice of writing unit tests before implementation - Identifying and critiquing the scope and contracts of functions - Cultivating an adversarial attitude toward code execution
  • Demonstrate the fundamental design principles for writing good software: - Function scope and abstraction - Recursion - Branching - Iteration - Structural design of programs
  • Understand how computers work in order to predict how programs will be translated into machine code and executed: - Examine how a compiler operates and how a machine executes code
  • Solve novel problems by building correct and functional software programs: - Code solutions according to good software design principles - Debug and unit test effectively - Decipher error messages and interpret code syntax
  • Co-create solutions by coding in teams, coordinating on design, and reviewing each other’s code: - Code solutions which adhere to agreed upon interfaces and obey defined contracts - Review other’s code and identify style, functionality, and design enhancements - Design and write unit tests for other’s code
  • Develop critical thinking skills while programming: - Formulate and articulate ideas for solving problems with code - Recognise and test assumptions which have been made and their consequences - Distinguish between relevant and irrelevant information and feedback provided by automated and human sources - Identify trade-offs and secondary problems
  • Practice the skills required to independently research and explore new programming concepts - Independently perform research to seek out clarifications and related concepts - Curate and prioritise each source of information as it relates to solving a specific problem - Find and distinguish reliable communities of practice and sources of information - Build a habit for experimenting and contributing findings back to a community of practice; trying things out to see what happens and sharing

Taught by

David Collien

Reviews

Start your review of CS101: Problem Solving with Automation and Storage

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.