Sorry, this page is no longer available
We may earn an affiliate commission when you visit our partners.
Course image
Peter Norvig

Take Udacity's free Design of Computer Programs course and learn new concepts, patterns and methods that will expand your Python coding abilities. Learn online with Udacity.

Here's a deal for you

Save money when you learn with a deal that may be relevant to this course.
All coupon codes, vouchers, and discounts are applied automatically unless otherwise noted.

What's inside

Syllabus

Lesson 1
Bonus: Shuffling
Andy's Corner 1
Problem Set 1
Read more

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Explores concepts, patterns, and methods that strengthen and develop coding abilities, which is standard practice in Python development
Taught by Peter Norvig, who are recognized for their work in artificial intelligence, natural language processing, machine learning, robotics, and computer science
Explores classic design patterns that can enhance and develop the coding abilities of learners

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Design principles and challenging python practice

According to learners, this course offers a strong dive into the design principles of computer programs, particularly leveraging Python. Many highlight the clear explanations provided by the instructor, making complex ideas more accessible. A recurring theme is the highly challenging problem sets, which students feel effectively reinforce learning and push them to think more like seasoned programmers. While generally well-received for its conceptual depth and practical application through assignments, some reviewers mention that the course requires solid prior experience with Python and can be difficult for those new to programming concepts, suggesting it's best suited for intermediate learners.
Core concepts are highly relevant today.
"While some specific examples might feel a bit older, the core design principles are timeless and applicable."
"The fundamental concepts taught here are still highly relevant for modern software development."
"I could immediately see how to apply these design ideas to my current projects, even if the tech isn't brand new."
Excellent coverage of program design principles.
"Loved the focus on design patterns and learning to structure programs properly."
"This course changed how I think about writing code, emphasizing good design from the start."
"It provides a solid foundation in software design concepts using practical examples."
Instructor makes complex concepts understandable.
"The instructor explains complex topics clearly and makes difficult concepts easy to grasp."
"His teaching style is very effective; I could follow along well even on tough subjects."
"I appreciated how he broke down the design patterns step-by-step."
Assignments are tough but deeply rewarding.
"The problem sets are incredibly challenging but reward you with a deep understanding."
"I learned the most by wrestling with the homework; it really forces you to apply the ideas."
"Be prepared for tough assignments that will push your limits, but they are fair and valuable."
Best for intermediate Python programmers.
"I found this course quite difficult without significant prior Python experience."
"It assumes you're already comfortable with Python fundamentals; beginners might struggle."
"This course is definitely aimed at those who have coded before and want to level up their design skills."

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 Design of Computer Programs with these activities:
Review Core Python Concepts
Strengthen foundational knowledge of Python syntax, data structures, and object-oriented programming.
Browse courses on Python Basics
Show steps
  • Go through your course notes and assignments to refresh your understanding of core concepts
  • Review relevant sections of the course textbook or online documentation
  • Complete practice exercises or quizzes to assess your comprehension
Organize Course Resources
Enhance understanding and retention by organizing course materials into a comprehensive resource.
Show steps
  • Review all lecture notes, assignments, quizzes, and exams
  • Identify key concepts and organize your notes accordingly
  • Create a digital or physical notebook where you can compile these organized notes
Python Coding Challenges
Boost problem-solving abilities and solidify Python skills through practice drills.
Browse courses on Problem Solving
Show steps
  • Choose a reputable platform or website that offers Python coding challenges
  • Select challenges that are aligned with your current knowledge level
  • Attempt to solve the challenges on your own, referring to course materials or documentation as needed
  • Review solutions and explanations to gain insights and improve your approach
Five other activities
Expand to see all activities and additional details
Show all eight activities
Form a Python Study Group
Foster collaboration, enhance understanding, and improve problem-solving skills.
Show steps
  • Recruit fellow students who are interested in forming a study group
  • Establish regular meeting times and create a shared online space for communication
  • Take turns presenting concepts, solving problems, and providing constructive feedback
Explore Advanced Python Techniques
Enhance Python proficiencies by following tutorials that cover advanced topics.
Browse courses on Advanced Python
Show steps
  • Identify areas where you seek improvement or want to expand your knowledge
  • Research and select reputable online tutorials or courses that cover these topics
  • Follow the tutorials diligently, practicing the concepts and techniques presented
  • Implement the learned techniques in your own projects or assignments to reinforce understanding
Attend Python Meetups or Conferences
Connect with other Python enthusiasts, learn about industry trends, and expand your knowledge.
Browse courses on Networking
Show steps
  • Research upcoming Python meetups or conferences in your area or online
  • Register and attend the events, actively participating in discussions
  • Connect with professionals and share knowledge, seeking guidance when needed
Build a Python Project Showcase
Solidify understanding of Python concepts by designing and implementing a portfolio of projects.
Show steps
  • Brainstorm and select projects that align with your skill level and interests
  • Design and develop each project, ensuring they demonstrate proficiency in various Python concepts
  • Document your projects thoroughly, including code explanations and project descriptions
  • Showcase your projects on a platform like GitHub or a personal website
Develop a Python-Based Tool or Application
Deepen understanding of Python capabilities by designing and implementing a practical application.
Show steps
  • Identify a problem or need that can be addressed with a Python application
  • Design the application's functionality, interface, and underlying data structures
  • Develop and test the application thoroughly, ensuring it meets the desired requirements
  • Deploy the application and make it available to users

Career center

Learners who complete Design of Computer Programs will develop knowledge and skills that may be useful to these careers:
Computer Programmer
Computer Programmers apply mathematical concepts, principles, and techniques to design and develop computer hardware and software systems. This course may be helpful in preparing for this role as it covers topics such as computer programming, software development, and computer systems.
Computer Systems Analyst
Computer Systems Analysts design, develop, and implement computer systems solutions for businesses and organizations. This course may be helpful in preparing for this role as it covers topics such as computer systems, computer programming, and software development.
Software Developer
Software Developers design, develop, and maintain software programs and applications. This course may be helpful in preparing for this role as it covers topics such as computer programming, software development, and computer systems.
Web Developer
Web Developers design, develop, and maintain websites and web applications. This course may be helpful in preparing for this role as it covers topics such as computer programming, web development, and computer systems.
Database Administrator
Database Administrators design, develop, and maintain database systems. This course may be helpful in preparing for this role as it covers topics such as computer systems, database management, and computer programming.
Information Security Analyst
Information Security Analysts design and implement security measures to protect computer systems and networks from unauthorized access, use, disclosure, disruption, modification, or destruction. This course may be helpful in preparing for this role as it covers topics such as computer systems, computer security, and computer programming.
Data Scientist
Data Scientists collect, analyze, and interpret data to help businesses and organizations make informed decisions. This course may be helpful in preparing for this role as it covers topics such as computer programming, data analysis, and statistics.
Machine Learning Engineer
Machine Learning Engineers design, develop, and implement machine learning models to help businesses and organizations make informed decisions. This course may be helpful in preparing for this role as it covers topics such as computer programming, machine learning, and artificial intelligence.
Artificial Intelligence Engineer
Artificial Intelligence Engineers design, develop, and implement artificial intelligence systems to help businesses and organizations make informed decisions. This course may be helpful in preparing for this role as it covers topics such as computer programming, artificial intelligence, and machine learning.
Computer Hardware Engineer
Computer Hardware Engineers design, develop, and maintain computer hardware systems. This course may be helpful in preparing for this role as it covers topics such as computer systems, computer hardware, and computer programming.
Computer Network Engineer
Computer Network Engineers design, develop, and maintain computer networks. This course may be helpful in preparing for this role as it covers topics such as computer networks, computer systems, and computer programming.
Software Quality Assurance Analyst
Software Quality Assurance Analysts design and implement quality assurance measures to ensure that software programs and applications meet customer requirements. This course may be helpful in preparing for this role as it covers topics such as computer programming, software development, and quality assurance.
Technical Writer
Technical Writers create and maintain technical documentation for software programs and applications. This course may be helpful in preparing for this role as it covers topics such as computer programming, technical writing, and computer systems.
Project Manager
Project Managers plan, execute, and close projects to achieve specific goals and objectives. This course may be helpful in preparing for this role as it covers topics such as project management, computer systems, and computer programming.
Business Analyst
Business Analysts analyze business needs and develop solutions to improve business processes. This course may be helpful in preparing for this role as it covers topics such as computer systems, business analysis, and computer programming.

Reading list

We've selected 13 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 Design of Computer Programs.
Is used as a textbook at academic institutions and by industry professionals. It provides a solid foundation in computer science concepts and is particularly useful for understanding the design and implementation of computer programs.

Share

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

Similar courses

Similar courses are unavailable at this time. Please try again later.
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 - 2025 OpenCourser