We may earn an affiliate commission when you visit our partners.
Course image
Scott Rixner, Joe Warren, and Luay Nakhleh

This two-part course builds upon the programming skills that you learned in our Introduction to Interactive Programming in Python course. We will augment those skills with both important programming practices and critical mathematical problem solving skills. These skills underlie larger scale computational problem solving and programming. The main focus of the class will be programming weekly mini-projects in Python that build upon the mathematical and programming principles that are taught in the class. To keep the class fun and engaging, many of the projects will involve working with strategy-based games.

Read more

This two-part course builds upon the programming skills that you learned in our Introduction to Interactive Programming in Python course. We will augment those skills with both important programming practices and critical mathematical problem solving skills. These skills underlie larger scale computational problem solving and programming. The main focus of the class will be programming weekly mini-projects in Python that build upon the mathematical and programming principles that are taught in the class. To keep the class fun and engaging, many of the projects will involve working with strategy-based games.

In part 1 of this course, the programming aspect of the class will focus on coding standards and testing. The mathematical portion of the class will focus on probability, combinatorics, and counting with an eye towards practical applications of these concepts in Computer Science.

Recommended Background - Students should be comfortable writing small (100+ line) programs in Python using constructs such as lists, dictionaries and classes and also have a high-school math background that includes algebra and pre-calculus.

Enroll now

What's inside

Syllabus

Required Python knowledge, coding standards, and machine grading
This week, we will introduce you to the structure and standards of the Principles of Computing courses.
Read more
Testing, plotting, and grids
This week, we will explain the importance of testing. We will also learn to solve problems with grids.
Probability, randomness, and objects/references
This we will learn how to use probability and randomness to solve problems.
Combinatorics, generators, and debugging
This week, we will learn how to use combinatorics to solve problems.
Counting, growth of functions, higher-order functions
This week, we will explain the importance of counting in solving complex problems.

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Emphasizes industry-standard coding practices and testing techniques
Provides foundational skills in probability, combinatorics, and counting, which are essential for various computational tasks
Employs interactive mini-projects in Python to reinforce concepts and foster practical problem-solving abilities
Suitable for individuals with a background in algebra and pre-calculus, making it accessible to a wide range of learners
Taught by experienced instructors who are recognized for their expertise in introductory computing concepts
Requires a basic understanding of Python, including constructs like lists, dictionaries, and classes, which may limit accessibility for complete beginners

Save this course

Save Principles of Computing (Part 1) to your list so you can find it easily later:
Save

Reviews summary

Well-received course with challenging projects in python

According to students, this course offers engaging projects in Python that are designed to help learners develop their programming skills. The projects are challenging but offer opportunities to apply the concepts learned in the lectures. The course also emphasizes the importance of testing and problem-solving using mathematics, statistics, and probability. While the instructions for the projects could be more clear, overall, learners say this course is a well-structured and highly recommended beginner course for computer science.
Course focuses on Python programming.
"This course gave me an easy entry into the world of coding that I couldnt get elsewhere. I recommend it to anyone who wants to learn how to code."
"The questions are sometimes in very tricky form."
Course places emphasis on testing and problem-solving with math, statistics, and probability.
"It also shows that the teaching team took the time to write up testing units for each assignments, to make sure that the assignments are well graded, and appropriate feedback was able to be provided, as best as they could."
"Does a great job of starting to transition students from introductory, highly guided projects toward more independent research and experimental exploration of the scientific underpinnings of coding with Python."
Projects in this course are demanding but provide opportunities to apply concepts.
"Really makes you think."
"Substantially more difficult than than the first two classes."
"While the projects are very interesting and highly relevant, the descriptions, at least for me, can be confusing and difficult to understand from time to time."
Instructions for mini-projects could be clearer.
"The only downside is that the instructions for the mini-projects were not very clear and it took some effort to figure out what was being asked."
"Make the project descriptions more clear."

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 Principles of Computing (Part 1) with these activities:
Review Python Basics
Review the basics of Python syntax and programming to prepare for the course.
Browse courses on Programming Basics
Show steps
  • Review Python Data Types
  • Practice writing simple Python programs
Read 'Think Python'
Gain a deeper understanding of Python programming principles and problem-solving.
View Think Python on Amazon
Show steps
  • Obtain a copy of the book
  • Read and study the chapters
  • Complete the exercises and projects
Review 'Introduction to Mathematical Thinking' by Keith Devlin
Reinforces knowledge of probability, combinatorics, higher-order functions, and other mathematical concepts essential to this course.
Show steps
  • Read the book thoroughly, taking notes on key concepts.
  • Solve practice problems and exercises from the book to test your understanding.
12 other activities
Expand to see all activities and additional details
Show all 15 activities
Follow tutorials on object-oriented programming in Python
Strengthens understanding of object-oriented programming concepts, which are utilized extensively in the course projects.
Browse courses on Python
Show steps
  • Search for tutorials on Python object-oriented programming.
  • Follow the tutorials and complete the accompanying exercises.
  • Apply the concepts learned in your own Python projects.
Work through Python Tutorials
Follow online tutorials to reinforce Python programming skills.
Show steps
  • Find Python tutorials on reputable websites
  • Complete the tutorials and practice the exercises
Solve Python coding challenges
Enhances Python coding skills and problem-solving abilities, which are fundamental to the course assignments and projects.
Browse courses on Python
Show steps
  • Find coding challenges and exercises online or in books.
  • Attempt to solve the challenges on your own.
  • Check your solutions against provided answers or consult with peers.
Join a study group or participate in online discussion forums related to the course
Facilitates collaboration, knowledge exchange, and peer support, enhancing the learning experience.
Browse courses on Collaboration
Show steps
  • Find a study group or join online discussion forums related to the course.
  • Engage in discussions, ask questions, and share knowledge with peers.
Solve Python Coding Challenges
Practice solving Python coding challenges to strengthen programming skills.
Show steps
  • Find Python coding challenges online
  • Attempt to solve the challenges on your own
  • Review solutions and learn from mistakes
Join a Python Study Group
Collaborate with peers to discuss Python concepts and work on projects.
Show steps
  • Find or create a Python study group
  • Attend study group meetings regularly
  • Participate in discussions and work on projects together
Build a Python program that implements a simple strategy-based game
Provides hands-on experience in applying the programming and problem-solving skills taught in the course.
Browse courses on Python
Show steps
  • Design the game concept and rules.
  • Implement the game logic and user interface in Python.
  • Test and debug the program.
  • Share the game with peers for feedback and improvement.
Participate in online coding competitions or hackathons
Provides a challenging and engaging environment to apply and refine programming skills.
Browse courses on Python
Show steps
  • Find online coding competitions or hackathons relevant to the course topics.
  • Form a team or participate individually.
  • Solve coding challenges and work on projects within the competition timeframe.
  • Reflect on your performance and identify areas for improvement.
Build a Simple Python Project
Apply Python skills to build a small project, reinforcing concepts and encouraging creativity.
Show steps
  • Identify a simple project idea that aligns with the course concepts
  • Design and plan the project
  • Implement the project using Python
  • Test and debug the project
Develop a blog post or presentation that explains a key concept from the course
Solidifies understanding of concepts by explaining them to others and improves communication skills.
Browse courses on Python
Show steps
  • Choose a key concept from the course.
  • Research and gather information on the concept.
  • Create a blog post or presentation that explains the concept clearly and engagingly.
Contribute to an existing Python open-source project or start your own
Encourages collaboration, real-world experience, and exposure to best practices in Python development.
Browse courses on Python
Show steps
  • Identify an existing Python open-source project or start your own.
  • Study the project codebase and familiarize yourself with its structure and design.
  • Make code contributions, such as fixing bugs or adding new features.
  • Participate in project discussions and collaborate with other contributors.
Contribute to an Open-Source Python Project
Gain practical experience and contribute to the Python community.
Show steps
  • Find an open-source Python project to contribute to
  • Review the project's documentation and codebase
  • Identify an area where you can make a contribution
  • Implement your contribution and submit a pull request

Career center

Learners who complete Principles of Computing (Part 1) will develop knowledge and skills that may be useful to these careers:
Software Developer
As a Software Developer, you will be responsible for designing, developing, and maintaining software applications. This course will help you build a foundation in the principles of computing, which are essential for success in this role. You will learn about coding standards, testing, probability, combinatorics, and counting, all of which are important concepts for software development. This course will also help you develop your problem-solving skills, which are essential for any Software Developer.
Data Scientist
As a Data Scientist, you will be responsible for collecting, analyzing, and interpreting data to help businesses make better decisions. This course will help you build a foundation in the principles of computing, which are essential for success in this role. You will learn about coding standards, testing, probability, combinatorics, and counting, all of which are important concepts for data science. This course will also help you develop your problem-solving skills, which are essential for any Data Scientist.
Quantitative Analyst
As a Quantitative Analyst, you will be responsible for using mathematical and statistical models to analyze financial data. This course will help you build a foundation in the principles of computing, which are essential for success in this role. You will learn about coding standards, testing, probability, combinatorics, and counting, all of which are important concepts for quantitative analysis. This course will also help you develop your problem-solving skills, which are essential for any Quantitative Analyst.
Computer Scientist
As a Computer Scientist, you will be responsible for conducting research in the field of computer science. This course will help you build a foundation in the principles of computing, which are essential for success in this role. You will learn about coding standards, testing, probability, combinatorics, and counting, all of which are important concepts for computer science research. This course will also help you develop your problem-solving skills, which are essential for any Computer Scientist.
Actuary
As an Actuary, you will be responsible for assessing and managing financial risks. This course will help you build a foundation in the principles of computing, which are essential for success in this role. You will learn about coding standards, testing, probability, combinatorics, and counting, all of which are important concepts for actuarial science. This course will also help you develop your problem-solving skills, which are essential for any Actuary.
Operations Research Analyst
As an Operations Research Analyst, you will be responsible for using mathematical and analytical techniques to improve the efficiency of business operations. This course will help you build a foundation in the principles of computing, which are essential for success in this role. You will learn about coding standards, testing, probability, combinatorics, and counting, all of which are important concepts for operations research. This course will also help you develop your problem-solving skills, which are essential for any Operations Research Analyst.
Business Analyst
As a Business Analyst, you will be responsible for analyzing business processes and identifying areas for improvement. This course will help you build a foundation in the principles of computing, which are essential for success in this role. You will learn about coding standards, testing, probability, combinatorics, and counting, all of which are important concepts for business analysis. This course will also help you develop your problem-solving skills, which are essential for any Business Analyst.
Financial Analyst
As a Financial Analyst, you will be responsible for analyzing financial data to make investment recommendations. This course will help you build a foundation in the principles of computing, which are essential for success in this role. You will learn about coding standards, testing, probability, combinatorics, and counting, all of which are important concepts for financial analysis. This course will also help you develop your problem-solving skills, which are essential for any Financial Analyst.
Product Manager
As a Product Manager, you will be responsible for managing the development and launch of new products. This course will help you build a foundation in the principles of computing, which are essential for success in this role. You will learn about coding standards, testing, probability, combinatorics, and counting, all of which are important concepts for product management. This course will also help you develop your problem-solving skills, which are essential for any Product Manager.
Project Manager
As a Project Manager, you will be responsible for planning, executing, and closing projects. This course will help you build a foundation in the principles of computing, which are essential for success in this role. You will learn about coding standards, testing, probability, combinatorics, and counting, all of which are important concepts for project management. This course will also help you develop your problem-solving skills, which are essential for any Project Manager.
Database Administrator
As a Database Administrator, you will be responsible for managing and maintaining databases. This course will help you build a foundation in the principles of computing, which are essential for success in this role. You will learn about coding standards, testing, probability, combinatorics, and counting, all of which are important concepts for database administration. This course will also help you develop your problem-solving skills, which are essential for any Database Administrator.
Network Administrator
As a Network Administrator, you will be responsible for managing and maintaining computer networks. This course will help you build a foundation in the principles of computing, which are essential for success in this role. You will learn about coding standards, testing, probability, combinatorics, and counting, all of which are important concepts for network administration. This course will also help you develop your problem-solving skills, which are essential for any Network Administrator.
Information Security Analyst
As an Information Security Analyst, you will be responsible for protecting computer systems and networks from security breaches. This course will help you build a foundation in the principles of computing, which are essential for success in this role. You will learn about coding standards, testing, probability, combinatorics, and counting, all of which are important concepts for information security. This course will also help you develop your problem-solving skills, which are essential for any Information Security Analyst.
Systems Analyst
As a Systems Analyst, you will be responsible for analyzing and designing computer systems. This course will help you build a foundation in the principles of computing, which are essential for success in this role. You will learn about coding standards, testing, probability, combinatorics, and counting, all of which are important concepts for systems analysis. This course will also help you develop your problem-solving skills, which are essential for any Systems Analyst.
Computer Support Specialist
As a Computer Support Specialist, you will be responsible for providing technical support to computer users. This course will help you build a foundation in the principles of computing, which are essential for success in this role. You will learn about coding standards, testing, probability, combinatorics, and counting, all of which are important concepts for computer support. This course will also help you develop your problem-solving skills, which are essential for any Computer Support Specialist.

Reading list

We've selected 39 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 Principles of Computing (Part 1).
This textbook deserves a place on any Computer Science students' bookshelf. It is one of the leading resources on all manner of algorithms and their implementation.
This multi-volume textbook classic reference work on computer science. It covers a wide range of topics, from algorithms and data structures to programming languages and software engineering.
This is another classic and commonly used textbook for advanced undergraduates and graduate students in Computer Science. Like the previous book on this list, it is an excellent reference for advanced topics in the field.
This textbook comprehensive guide to deep learning, a subfield of machine learning that has revolutionized many areas of computer science. It covers the theoretical foundations of deep learning, as well as practical techniques for training and evaluating deep learning models.
Is an excellent resource for students without a formal computer science background. It covers the fundamentals of programming and the course's central concepts like probability, combinatorics, and counting.
As the title suggests, this book provides a thorough foundation in the mathematics used in Computer Science. It is commonly used in upper division undergraduate and graduate courses.
This comprehensive textbook covers a wide range of mathematical topics that are essential for computer science students, including combinatorics, probability, and counting. It would be a valuable resource for students who are interested in deepening their understanding of these concepts.
This textbook provides a comprehensive introduction to reinforcement learning, a subfield of machine learning that focuses on learning by interacting with an environment. It valuable resource for students who are interested in learning more about this exciting and rapidly-growing field.
This comprehensive textbook covers the use of Python for data analysis, including data cleaning, data exploration, and data visualization. It would be a valuable resource for students who are interested in using Python for data science projects.
Is commonly used as a textbook for students new to programming in Python. This makes it an ideal choice for students in this course to use as a reference who have little prior experience with the language.
This undergraduate-level textbook introduces the fundamental concepts of probability, including counting techniques, conditional probability, and random variables. It provides a strong foundation for the mathematical portion of the course, particularly for the topics covered in the first part.
This intermediate-level textbook focuses on writing clear, concise, and effective Python code. As the course emphasizes coding standards and best practices, this book would be a valuable resource for students who want to improve their programming skills.
This textbook introduces the fundamental concepts of machine learning, using Python as the programming language. It covers a wide range of topics, including supervised learning, unsupervised learning, and deep learning.
This textbook provides a concise and accessible introduction to computer science. It covers the fundamental concepts of computer science, including algorithms, data structures, and computer architecture.
Provides a rigorous treatment of discrete mathematics, and would be a useful reference for learners who want to learn more about the mathematical foundations of computer science.
This practical and project-based textbook is designed to help beginners learn Python quickly and effectively. It covers the basics of Python programming, as well as more advanced topics such as data visualization and machine learning.
This beginner-friendly textbook teaches Python programming through a series of practical projects. It great resource for students who are interested in learning how to use Python to automate tasks and solve real-world problems.
This classic textbook on algorithms, and would be a useful reference for learners who want to learn more about the mathematical foundations of computer science.
Is more advanced than some of the other choices for this list, but it provides more depth to some of the course's topics. For example, it does an excellent job of explaining object oriented programming concepts.
Provides a clear and concise introduction to probability, and would be useful background reading for learners who are new to the subject.
This interactive and engaging textbook uses a visual, hands-on approach to teach Python programming. It would be a useful resource for students who are new to programming or who are looking for a different perspective on the subject.
Provides a comprehensive introduction to combinatorics and graph theory, and would be a useful reference for learners who want to learn more about these subjects.
Covers a wide range of topics in discrete mathematics, including probability, combinatorics, and counting, which are all relevant to the course.
This textbook is an excellent resource for learning about algorithms and data structures in Python. While it may not be necessary for this course, it can help you excel if you plan on pursuing advanced study in Computer Science.
Provides a comprehensive introduction to number theory, and would be a useful reference for learners who want to learn more about the subject.
Explores the relationship between logic, mathematics, music, and art, and would be a thought-provoking read for learners who are interested in the broader implications of computer science.
Provides a comprehensive introduction to algebra, and would be a useful reference for learners who want to learn more about the subject.
Provides a comprehensive introduction to topology, and would be a useful reference for learners who want to learn more about the subject.
Provides a comprehensive introduction to mathematical logic, and would be a useful reference for learners who want to learn more about the subject.
Provides a concise overview of the core concepts of computer science, and would be useful background reading for learners who are new to the field.

Share

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

Similar courses

Here are nine courses similar to Principles of Computing (Part 1).
Principles of Computing (Part 2)
Most relevant
Algorithmic Thinking (Part 2)
Most relevant
An Introduction to Interactive Programming in Python...
Most relevant
Python Programming Fundamentals
Global Warming II: Create Your Own Models in Python
Algorithmic Thinking (Part 1)
A-level Further Mathematics for Year 13 - Course 1:...
Optimization with Python: Solve Operations Research...
Problem Solving, Python Programming, and Video Games
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