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

We found an offer that may be relevant to this course.
Save money when you learn. 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
Office Hours 1
Lesson 2
Problem Set 2
Office Hours 2
Lesson 3
Problem Set 3
Office Hours 3
Lesson 4
Problem Set 4
Lesson 5
Problem Set 5
Office Hours 5
Python Glossary
Lesson 6
Problem Set 6
Office Hours 6
Lesson 7
Practice Exam

Good to know

Know what's good
, what to watch for
, 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

Save Design of Computer Programs to your list so you can find it easily later:
Save

Reviews summary

Advanced python programming

This course is a great choice for experienced Python programmers who are looking to improve their problem-solving and coding skills. The course is challenging but rewarding, and students will learn new concepts, patterns, and methods that will help them to become better programmers. Peter Norvig is an excellent instructor and the course materials are well-organized and engaging.
The course materials are well-organized and engaging.
Prepare to work hard and learn a lot.
"Be prepared to struggle (and learn)!"
Peter Norvig is a virtuoso at problem solving and Python programming.
"Norvig is a virtuoso at problem solving and Python programming."
This course is not for beginners.
"Too little previous programming experience and familiarity to CS concepts might lead to frustration here."

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:
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 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 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.
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.

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