- Online Degree Explore Bachelor’s & Master’s degrees
- MasterTrack™ Earn credit towards a Master’s degree
- University Certificates Advance your career with graduate-level learning
- Top Courses
- Join for Free
Computational Thinking for Problem Solving
Taught in English
Some content may not be translated
Financial aid available
105,906 already enrolled
Gain insight into a topic and learn the fundamentals
Instructor: Susan Davidson
Included with Coursera Plus
Skills you'll gain
- Simple Algorithm
- Python Programming
- Problem Solving
Details to know
Add to your LinkedIn profile
See how employees at top companies are mastering in-demand skills
Earn a career certificate
Add this credential to your LinkedIn profile, resume, or CV
Share it on social media and in your performance review
There are 4 modules in this course
Computational thinking is the process of approaching a problem in a systematic manner and creating and expressing a solution such that it can be carried out by a computer. But you don't need to be a computer scientist to think like a computer scientist! In fact, we encourage students from any field of study to take this course. Many quantitative and data-centric problems can be solved using computational thinking and an understanding of computational thinking will give you a foundation for solving problems that have real-world, social impact.
In this course, you will learn about the pillars of computational thinking, how computer scientists develop and analyze algorithms, and how solutions can be realized on a computer using the Python programming language. By the end of the course, you will be able to develop an algorithm and express it to the computer by writing a simple Python program. This course will introduce you to people from diverse professions who use computational thinking to solve problems. You will engage with a unique community of analytical thinkers and be encouraged to consider how you can make a positive social impact through computational thinking.
Pillars of Computational Thinking
Computational thinking is an approach to solving problems using concepts and ideas from computer science, and expressing solutions to those problems so that they can be run on a computer. As computing becomes more and more prevalent in all aspects of modern society -- not just in software development and engineering, but in business, the humanities, and even everyday life -- understanding how to use computational thinking to solve real-world problems is a key skill in the 21st century. Computational thinking is built on four pillars: decomposition, pattern recognition, data representation and abstraction, and algorithms. This module introduces you to the four pillars of computational thinking and shows how they can be applied as part of the problem solving process.
6 videos 4 quizzes 2 peer reviews 4 discussion prompts
6 videos • Total 44 minutes
- 1.1 Introduction • 4 minutes • Preview module
- 1.2 Decomposition • 6 minutes
- 1.3 Pattern Recognition • 5 minutes
- 1.4 Data Representation and Abstraction • 7 minutes
- 1.5 Algorithms • 8 minutes
- 1.6 Case Studies • 11 minutes
4 quizzes • Total 50 minutes
- 1.2 Decomposition • 10 minutes
- 1.3 Pattern Recognition • 10 minutes
- 1.4 Data Representation and Abstraction • 15 minutes
- 1.5 Algorithms • 15 minutes
2 peer reviews • Total 60 minutes
- Applying Computational Thinking in Your Life • 30 minutes
- Project Part 1: Applying the Pillars of Computational Thinking • 30 minutes
4 discussion prompts • Total 40 minutes
- Applying Decomposition in Your Life • 10 minutes
- Applying Pattern Recognition in Your Life • 10 minutes
- Applying Data Representation and Abstraction in Your Life • 10 minutes
- Applying Algorithms in Your Life • 10 minutes
Expressing and Analyzing Algorithms
When we use computational thinking to solve a problem, what we’re really doing is developing an algorithm: a step-by-step series of instructions. Whether it’s a small task like scheduling meetings, or a large task like mapping the planet, the ability to develop and describe algorithms is crucial to the problem-solving process based on computational thinking. This module will introduce you to some common algorithms, as well as some general approaches to developing algorithms yourself. These approaches will be useful when you're looking not just for any answer to a problem, but the best answer. After completing this module, you will be able to evaluate an algorithm and analyze how its performance is affected by the size of the input so that you can choose the best algorithm for the problem you’re trying to solve.
7 videos 6 quizzes 4 peer reviews
7 videos • Total 68 minutes
- 2.1 Finding the Largest Value • 8 minutes • Preview module
- 2.2 Linear Search • 5 minutes
- 2.3 Algorithmic Complexity • 8 minutes
- 2.4 Binary Search • 11 minutes
- 2.5 Brute Force Algorithms • 13 minutes
- 2.6 Greedy Algorithms • 9 minutes
- 2.7 Case Studies • 12 minutes
6 quizzes • Total 65 minutes
- 2.1 Finding the Largest Value • 10 minutes
- 2.2 Linear Search • 10 minutes
- 2.3 Algorithmic Complexity • 10 minutes
- 2.4 Binary Search • 10 minutes
- 2.5 Brute Force Algorithms • 15 minutes
- 2.6 Greedy Algorithms • 10 minutes
4 peer reviews • Total 115 minutes
- Finding Minimum Values • 30 minutes
- Binary Search • 30 minutes
- Greedy vs. Brute Force Algorithms • 30 minutes
- Project Part 2: Describing Algorithms Using a Flowchart • 25 minutes
Fundamental Operations of a Modern Computer
Computational thinking is a problem-solving process in which the last step is expressing the solution so that it can be executed on a computer. However, before we are able to write a program to implement an algorithm, we must understand what the computer is capable of doing -- in particular, how it executes instructions and how it uses data. This module describes the inner workings of a modern computer and its fundamental operations. Then it introduces you to a way of expressing algorithms known as pseudocode, which will help you implement your solution using a programming language.
6 videos 5 quizzes 5 peer reviews
6 videos • Total 45 minutes
- 3.1 A History of the Computer • 7 minutes • Preview module
- 3.2 Intro to the von Neumann Architecture • 8 minutes
- 3.3 von Neumann Architecture Data • 6 minutes
- 3.4 von Neumann Architecture Control Flow • 5 minutes
- 3.5 Expressing Algorithms in Pseudocode • 8 minutes
- 3.6 Case Studies • 10 minutes
5 quizzes • Total 50 minutes
- 3.1 A History of the Computer • 10 minutes
- 3.2 Intro to the von Neumann Architecture • 10 minutes
- 3.3 von Neumann Architecture Data • 10 minutes
- 3.4 von Neumann Architecture Control Flow • 10 minutes
- 3.5 Expressing Algorithms in Pseudocode • 10 minutes
5 peer reviews • Total 120 minutes
- von Neumann Architecture Data & Instructions • 30 minutes
- Reading & Writing Pseudocode • 25 minutes
- Project Part 3: Writing Pseudocode • 25 minutes
- (Optional) von Neumann Architecture Control Instructions • 20 minutes
- (Optional) Understanding Pseudocode • 20 minutes
Applied Computational Thinking Using Python
Writing a program is the last step of the computational thinking process. It’s the act of expressing an algorithm using a syntax that the computer can understand. This module introduces you to the Python programming language and its core features. Even if you have never written a program before -- or never even considered it -- after completing this module, you will be able to write simple Python programs that allow you to express your algorithms to a computer as part of a problem-solving process based on computational thinking.
9 videos 12 readings 12 quizzes
9 videos • Total 90 minutes
- 4.1 Introduction to Python • 6 minutes • Preview module
- 4.2 Variables • 13 minutes
- 4.3 Conditional Statements • 8 minutes
- 4.4 Lists • 7 minutes
- 4.5 Iteration • 14 minutes
- 4.6 Functions • 10 minutes
- 4.7 Classes and Objects • 9 minutes
- 4.8 Case Studies • 11 minutes
- 4.9 Course Conclusion • 8 minutes
12 readings • Total 125 minutes
- Programming on the Coursera Platform • 10 minutes
- Python Playground • 0 minutes
- Variables Programming Activity • 20 minutes
- Solution to Variables Programming Activity • 10 minutes
- Conditionals Programming Activity • 20 minutes
- Solution to Conditionals Programming Activity • 10 minutes
- Solution to Lists Programming Assignment • 5 minutes
- Solution to Loops Programming Assignment • 10 minutes
- Solution to Functions Programming Assignment • 10 minutes
- Solution to Challenge Programming Assignment • 10 minutes
- Solution to Classes and Objects Programming Assignment • 10 minutes
- Solution to Project Part 4 • 10 minutes
12 quizzes • Total 185 minutes
- (Optional) Challenge Programming Assignment • 20 minutes
- 4.2 Variables • 10 minutes
- 4.3 Conditional Statements • 5 minutes
- 4.4 Lists • 10 minutes
- Lists Programming Assignment • 15 minutes
- 4.5 Iteration • 10 minutes
- Loops Programming Assignment • 30 minutes
- Functions Programming Assignment • 20 minutes
- 4.7 Classes and Objects • 10 minutes
- Classes and Objects Programming Assignment • 20 minutes
- Project Part 4: Implementing the Solution in Python • 25 minutes
We asked all learners to give feedback on our instructors based on the quality of their teaching style.
The University of Pennsylvania (commonly referred to as Penn) is a private university, located in Philadelphia, Pennsylvania, United States. A member of the Ivy League, Penn is the fourth-oldest institution of higher education in the United States, and considers itself to be the first university in the United States with both undergraduate and graduate studies.
Recommended if you're interested in Algorithms
University of Pennsylvania
Introduction to Python Programming
Politecnico di Milano
Fundamentals of Organization
Coursera Project Network
Créer des cartes sur Trello
University of Michigan
Problem Solving Using Computational Thinking
Prepare for a degree.
Taking this course by University of Pennsylvania may provide you with a preview of the topics, materials and instructors in a related degree program which can help you decide if the topic or university is right for you.
Master of Computer and Information Technology
Degree · 16 – 40 months
Why people choose Coursera for their career
Showing 3 of 1315
Reviewed on Feb 4, 2019
The course is very well-designed and it helped me develop understand how to apply computational thinking in solving various types of problems as well as acquire basic skills of programming in Python.
Reviewed on Nov 2, 2019
Course content is good, graded assignments are good, I just had problems with my assignments in week 4 as I easily became confused with the implementation of all the lessons combined.
Reviewed on Jan 18, 2019
Useful course taught at an adequate rate. I recommend it for people who are interested in learning the basics of computational thinking, i.e. a systematic approach to problem-solving.
New to Algorithms? Start here.
Open new doors with Coursera Plus
Unlimited access to 7,000+ world-class courses, hands-on projects, and job-ready certificate programs - all included in your subscription
Advance your career with an online degree
Earn a degree from world-class universities - 100% online
Join over 3,400 global companies that choose Coursera for Business
Upskill your employees to excel in the digital economy
Frequently asked questions
Do i need to know how to program or have studied computer science in order to take this course.
No, definitely not! This course is intended for anyone who has an interest in approaching problems more systematically, developing more efficient solutions, and understanding how computers can be used in the problem solving process. No prior computer science or programming experience is required.
How much math do I need to know to take this course?
Some parts of the course assume familiarity with basic algebra, trigonometry, mathematical functions, exponents, and logarithms. If you don’t remember those concepts or never learned them, don’t worry! As long as you’re comfortable with multiplication, you should still be able to follow along. For everything else, we’ll provide links to references that you can use as a refresher or as supplemental material.
Does this course prepare me for the Master of Computer and Information Technology (MCIT) degree program at the University of Pennsylvania?
This course will help you discover whether you have an aptitude for computational thinking and give you some beginner-level experience with online learning. In this course you will learn several introductory concepts from MCIT instructors produced by the same team that brought the MCIT degree online.
If you have a bachelor's degree and are interested in learning more about computational thinking, we encourage you to apply to MCIT On-campus (http://www.cis.upenn.edu/prospective-students/graduate/mcit.php) or MCIT Online (https://www.coursera.org/degrees/mcit-penn). Please mention that you have completed this course in the application.
Where can I find more information about the Master of Computer and Information Technology (MCIT) degree program at the University of Pennsylvania?
Use these links to learn more about MCIT:
MCIT On-campus: http://www.cis.upenn.edu/prospective-students/graduate/mcit.php
MCIT Online: https://www.coursera.org/degrees/mcit-penn
When will I have access to the lectures and assignments?
Access to lectures and assignments depends on your type of enrollment. If you take a course in audit mode, you will be able to see most course materials for free. To access graded assignments and to earn a Certificate, you will need to purchase the Certificate experience, during or after your audit. If you don't see the audit option:
The course may not offer an audit option. You can try a Free Trial instead, or apply for Financial Aid.
The course may offer 'Full Course, No Certificate' instead. This option lets you see all course materials, submit required assessments, and get a final grade. This also means that you will not be able to purchase a Certificate experience.
What will I get if I purchase the Certificate?
When you purchase a Certificate you get access to all course materials, including graded assignments. Upon completing the course, your electronic Certificate will be added to your Accomplishments page - from there, you can print your Certificate or add it to your LinkedIn profile. If you only want to read and view the course content, you can audit the course for free.
What is the refund policy?
You will be eligible for a full refund until two weeks after your payment date, or (for courses that have just launched) until two weeks after the first session of the course begins, whichever is later. You cannot receive a refund once you’ve earned a Course Certificate, even if you complete the course within the two-week refund period. See our full refund policy Opens in a new tab .
Is financial aid available?
Yes. In select learning programs, you can apply for financial aid or a scholarship if you can’t afford the enrollment fee. If fin aid or scholarship is available for your learning program selection, you’ll find a link to apply on the description page.
Forgot password? New user? Sign up
Existing user? Log in
- Number Theory
- Everyday Math
- Classical Mechanics
- Electricity and Magnetism
- Quantitative Finance
Take a guided, problem-solving based approach to learning Computer Science. These compilations provide unique perspectives and applications you won't find anywhere else.
Computer Science Fundamentals
- Tools of Computer Science
- Computational Problem Solving
- Algorithmic Thinking
- Building Blocks
- Array Algorithms
- The Speed of Algorithms
- Stable Matching
Programming with Python
- String Manipulation
- Loops, Functions and Arguments
Browse through thousands of Computer Science wikis written by our community of experts.
Types and Data Structures
- Abstract Data Types
- Array (ADT)
- Double Ended Queues
- Associative Arrays
- Priority Queues
- Array (Data Structure)
- Disjoint-set Data Structure (Union-Find)
- Dynamic Array
- Linked List
- Unrolled Linked List
- Hash Tables
- Bloom Filter
- Cuckoo Filter
- Merkle Tree
- Recursive Backtracking
- Fenwick Tree
- Binary Search Trees
- Red-Black Tree
- Scapegoat Tree
- Binary Heap
- Binomial Heap
- Fibonacci Heap
- Pairing Heap
- Graph implementation and representation
- Adjacency Matrix
- Spanning Trees
- Social Networks
- Kruskal's Algorithm
- Regular Expressions
- Divide and Conquer
- Greedy Algorithms
- Randomized Algorithms
- Complexity Theory
- Big O Notation
- Master Theorem
- Amortized Analysis
- Complexity Classes
- P versus NP
- Dynamic Programming
- Backpack Problem
- Egg Dropping
- Fast Fibonacci Transform
- Karatsuba Algorithm
- Sorting Algorithms
- Insertion Sort
- Bubble Sort
- Counting Sort
- Median-finding Algorithm
- Binary Search
- Depth-First Search (DFS)
- Breadth-First Search (BFS)
- Shortest Path Algorithms
- Dijkstra's Shortest Path Algorithm
- Bellman-Ford Algorithm
- Floyd-Warshall Algorithm
- Johnson's Algorithm
- Matching (Graph Theory)
- Matching Algorithms (Graph Theory)
- Flow Network
- Max-flow Min-cut Algorithm
- Ford-Fulkerson Algorithm
- Edmonds-Karp Algorithm
- Shunting Yard Algorithm
- Rabin-Karp Algorithm
- Knuth-Morris-Pratt Algorithm
- Basic Shapes, Polygons, Trigonometry
- Convex Hull
- Finite State Machines
- Turing Machines
- Halting Problem
- Kolmogorov Complexity
- Traveling Salesperson Problem
- Pushdown Automata
- Regular Languages
- Context Free Grammars
- Context Free Languages
- Signals and Systems
- Linear Time Invariant Systems
- Predicting System Behavior
- List comprehension
- Primality Testing
- Pattern matching
- Logic Gates
- Control Flow Statements
- Object-Oriented Programming
- Classes (OOP)
- Methods (OOP)
Cryptography and Simulations
- Caesar Cipher
- Vigenère Cipher
- RSA Encryption
- Enigma Machine
- Knapsack Cryptosystem
- Secure Hash Algorithms
- Entropy (Information Theory)
- Huffman Code
- Error correcting codes
- Symmetric Ciphers
- Inverse Transform Sampling
- Monte-Carlo Simulation
- Genetic Algorithms
- Programming Blackjack
- Machine Learning
- Supervised Learning
- Unsupervised Learning
- Feature Vector
- Naive Bayes Classifier
- K-nearest Neighbors
- Support Vector Machines
- Principal Component Analysis
- Ridge Regression
- k-Means Clustering
- Markov Chains
- Hidden Markov Models
- Gaussian Mixture Model
- Collaborative Filtering
- Artificial Neural Network
- Feedforward Neural Networks
- Recurrent Neural Network
CS2104: Introduction to Problem Solving in Computer Science
This course introduces the student to a broad range of heuristics for solving problems in a range of settings. Emphasis on problem-solving techniques that aid programmers and computer scientists. Heuristics for solving problems ''in the small'' (classical math and word problems), generating potential solutions to ''real-life'' problems encountered in the profession, and problem solving in teams.
Having successfully completed this course, the student will be able to:
- Identify skills and personality traits of successful problem solving.
- Apply standard problem-solving heuristics to aid in problem solving.
- Apply problem-solving techniques to programming activities.
- Apply problem-solving techniques to school and personal interactions.
- Apply pairs and team problem-solving techniques.
- Generate potential solutions to problems with standard heuristics.
- Formulate and successfully communicate the solutions to problems.
Prerequisites: MATH 1205 or MATH 1225 or MATH 1526.
Taught By: Alexey Onufriev Dwight Barnette Layne Watson Margaret Ellis Cliff Shaffer William McQuain
Encyclopedia of Education and Information Technologies pp 1–16 Cite as
Problem-Solving in Computer Science: Learning from a Gifted Peer
- Bertold Kujath 2 &
- Andreas Schwill 2
- Living reference work entry
- First Online: 22 August 2019
A comparative study of individuals with high and low skills in computer science shows that efficient problem-solvers use a significantly different approach while dealing with typical problems of computer science compared to rather weak problem-solvers. It was noteworthy that despite knowing typical tools for informatic problem-solving, such as tree structures or recursion, low performers tended not to utilize them during the problem-solving process. Furthermore, the study revealed that in contrast to high performers, low performers did not heed to many common recommendations for problem-solving, such as splitting the problem into subproblems or performing a problem analysis prior to the actual work on the problem solution. These findings, as well as the efficient strategies used by the high-skilled students, laid the foundation of the concept for an educational video. Its purpose is to allow learners to observe high-skilled problem-solvers while approaching typical informatic problems. The following paper describes the entire development process of an instructional video about informatic problem-solving, from basic research, over the conceptual development to the evaluation of the final video.
This is a preview of subscription content, access via your institution .
Berk RA (2009) Multimedia teaching with video clips: TV, movies, YouTube and mtvU in the college classroom. Int J Technol Teach Learn 5(1):1–21
Friege G (2001) Wissen und Problemlösen. Logos Verlag, Berlin
Fuchs M (2006) Vorgehensweisen mathematisch potentiell begabter Dritt- und Viertklässler beim Problemlösen. LIT Verlag, Berlin
Heller K, Mönks F, Passow A (1993) International handbook of research and development of giftedness and talent. Pergamon, Oxford
Kittelberger R, Freisleben I (1994) Lernen mit Video und Film. Beltz Verlag, Weinheim
Kujath B (2006) Ein Test- und Analyseverfahren zur Kontrastierung von Problemlöseprozessen informatischer Hoch- und Niedrigleister – erste Ergebnisse einer Pilotstudie. In: Schwill A, Schulte C, Thomas M (Hrsg) GI-edition-lecture notes in informatics Band 99, Gesellschaft für Informatik, Bonn, pp 49–69
Kujath B (2007) Vergleichende Analysen zweier Problemlöseprozesse unter dem Aspekt des Problemlöseerfolgs. In: Schubert S (Hrsg) GI-edition-lecture notes in informatics, vol 112. Gesellschaft für Informatik, Bonn, pp 295–306
Kujath B (2008) Anhang zum Workshopbeitrag: Wie können schwache Problemlöser von Hochleistern lernen – Konzeption eines Lehrvideos. http://ddi.cs.uni-potsdam.de/didaktik/kujath/Fachgruppe2008Anhang.pdf
Kujath B (2011a) Keine Angst vor Informatikproblemen. Hochleistern über die Schulter geschaut. Ein Lehrvideo zum informatischen Problemlösen. Universitätsverlag, Potsdam. ISBN 978-3-86956-150-9
Kujath B (2011b) Don’t be afraid of informatics problems – looking over a highflyer’s shoulder. Educational video, 33 minutes. http://mediaup.uni-potsdam.de/Browse/Tag/highflyer
Kujath B, Schütze C (2015) Evaluation der Lernwirksamkeit eines Lehrvideos zum informatischen Problemlösen. HDI 2014: Gestalten und Meistern von Übergängen. Universität, Potsdam. pp 97–104
Lippert H (1987) Rezipienten-orientierte Medienwirkungsforschung. Verlag Josef Lippert, Münster
Mair D (2005) E-Learning – das Drehbuch. Springer, Berlin
Märtin D (2005) Erfolgreich texten. Voltmedia, Paderborn
Mayring P (2014) Qualitative content analysis. Theoretical foundation, basic procedures and software solution. Weinheim, Beltz
Paivio A (1971) Imagery and verbal processes. Lawrence Erlbaum Associates, Inc., Hillsdale
Paivio A (1986) Mental representations: a dual coding approach. Oxford University Press, New York
Sailer M, Figas P (2015) Audiovisuelle Bildungsmedien in der Hochschullehre. Eine Experimentalstudie zu zwei Lernvideotypen in der Statistiklehre. http://bildungsforschung.org , 1 Ausgabe 2015
Schubert S, Schwill A (2004) Didaktik der Informatik. Spektrum Akademie Verlag, Heidelberg
MATH Google Scholar
Schütze C (2013) Analyse der Lernwirksamkeit eines Lehrfilms zum problemlösenden Denken im Informatikunterricht, Master Thesis Universität Potsdam. Institut für Informatik
Waldmann MR, Weinert FE (1990) Intelligenz und Denken. Hogrefe, Göttingen
Authors and affiliations.
Institute of Computer Science, University of Potsdam, Potsdam, Germany
Bertold Kujath & Andreas Schwill
You can also search for this author in PubMed Google Scholar
Correspondence to Andreas Schwill .
Editors and affiliations.
Victoria University , Melbourne, VIC, Australia
Section Editor information
Faculty of Science and Technology, University of Siegen, Siegen, Germany
Rights and permissions
Reprints and Permissions
© 2019 Springer Nature Switzerland AG
About this entry
Cite this entry.
Kujath, B., Schwill, A. (2019). Problem-Solving in Computer Science: Learning from a Gifted Peer. In: Tatnall, A. (eds) Encyclopedia of Education and Information Technologies. Springer, Cham. https://doi.org/10.1007/978-3-319-60013-0_29-1
DOI : https://doi.org/10.1007/978-3-319-60013-0_29-1
Received : 20 November 2017
Accepted : 07 March 2018
Published : 22 August 2019
Publisher Name : Springer, Cham
Print ISBN : 978-3-319-60013-0
Online ISBN : 978-3-319-60013-0
eBook Packages : Springer Reference Computer Sciences Reference Module Computer Science and Engineering
- Find a journal
- Publish with us
Solving problems is the core of computer science. Programmers must first understand how a human solves a problem, then understand how to translate this "algorithm" into something a computer can do, and finally how to "write" the specific syntax (required by a computer) to get the job done. It is sometimes the case that a machine will solve a problem in a completely different way than a human.
Computer Programmers are problem solvers. In order to solve a problem on a computer you must:
Know how to represent the information (data) describing the problem.
Determine the steps to transform the information from one representation into another.
A computer, at heart, is really dumb. It can only really know about a few things... numbers, characters, booleans, and lists (called arrays) of these items. (See Data Types). Everything else must be "approximated" by combinations of these data types.
A good programmer will "encode" all the "facts" necessary to represent a problem in variables (See Variables). Further, there are "good ways" and "bad ways" to encode information. Good ways allow the computer to easily "compute" new information.
An algorithm (see Algorithm) is a set of specific steps to solve a problem. Think of it this way: if you were to tell your 3 year old neice to play your favorite song on the piano (assuming the neice has never played a piano), you would have to tell her where the piano was, and how to sit on the bench, and how to open the cover, and which keys to press, and which order to press them in, etc, etc, etc.
The core of what good programmers do is being able to define the steps necessary to accomplish a goal. Unfortunately, a computer, only knows a very restricted and limited set of possible steps. For example a computer can add two numbers. But if you want to find the average of two numbers, this is beyond the basic capabilities of a computer. To find the average, you must:
- First: Add the two numbers and save this result in a variable
- Then: Divide this new number the number two, and save this result in a variable.
- Finally: provide this number to the rest of the program (or print it for the user).
We "compute" all the time. Computing is the act of solving problems (or coming up with a plan to solve problems) in an organized manner. We don't need computers to "compute". We can use our own brain.
Encapsulation and Abstraction and Complexity Hiding
Computer scientists like to use the fancy word "Encapsulation" to show how smart we are. This is just a term for things we do as humans every day. It is combined with another fancy term: "Abstraction".
Abstraction is the idea of "ignoring the details". For example, a forest is really a vastly complex ecosystem containing trees, animals, water paths, etc, etc, etc. But to a computer scientist (and to a normal person), its just "a forest".
For example, if your professor needs a cup of coffee, and asks you the single item: "Get me a cup of coffee", he has used both encapsulation and abstraction. The number of steps required to actually get the coffee are enumerable. Including, getting up, walking down the hall, getting in your car, driving to a coffee stand, paying for the coffee, etc, etc, etc. Further, the idea of what a cup of coffee is, is abstract. Do you bring a mug of coffee, or a Styrofoam cup? Is it caffeinated or not? Is it freshly brewed or from concentrate? Does it come from Africa or America?
All of this information is TOO MUCH and we would quickly be unable to funciton if we had to remember all of these details. Thus we "abstract away" the details and only remember the few important items.
This brings us to the idea of "Complexity Hiding". Complexity hiding is the idea that most of the times details don't matter. In a computer program, as simple an idea as drawing a square on the screen involves hundreds (if not thousands) of (low level) computer instructions. Again, a person couldn't possible create interesting programs if every time they wanted to do something, they had to re-write (correctly) every one of those instructions. By "ecapsulating" what is meant by "draw square" and "reusing" this operation over and over again, we make programming tractable.
The idea behind encapsulation is to store the information necessary to a particular idea in a set of variables associated with a single "object". We then create functions to manipulate this object, regardless of what the actual data is. From that point on, we treat the idea from a "high level" rather than worry about all the parts (data) and actions (functions) necessary to represent the object in a computer.
Brute force is a technique for solving problems that relies on a computers speed (how fast it can repeat steps) to solve a problem. For example, if you wanted to know how many times the number 8 goes into the number 100, you could do the following:
Of course this is a silly way for a computer (or a human) to solve this problem. The real way we would do it is:
When in doubt, you can often use "brute force" to solve a problem, but it often saves time (at least computer time) to think about the problem and solve it in an elegant manner.
Your browser is not supported. Please upgrade your browser to one of our supported browsers . You can try viewing the page, but expect functionality to be broken.
Computer Science Discoveries
Code.org's most flexible course, allowing each unit to be taught alone, combined into collections that focus on specific areas, or as a full year course. The free curriculum introduces students to building their own websites, apps, animations, games, and physical computing systems.
Flexible curriculum to meet your needs
- Flexible introductory curriculum
- Breadth of topics
- No prior experience needed
- Build many different types of projects
- Exciting and fun
Curricula at a glance
Duration: Month, Semester, or Year
Devices: Laptop, Chromebook
Topics: Artificial Intelligence, Data, Web Design, Physical Computing, App Design, Games and Animations, Art and Design, Programming
Programming Tools: App Lab, Game Lab, AI Lab, Web Lab
Professional Learning: Facilitator-led Workshops, Self-paced Modules
Accessibility: Text-to-speech, Closed captioning, Immersive reader
Languages Supported: English
This curriculum is all inclusive, well organized, and student centered! The incredible organization in the curriculum is what makes me use it year after year.
Maria Sellers • CS Discoveries Teacher
Picking the right CS Discoveries course for your classroom
With the diverse set of options offered for CS Discoveries, there is a course for all different needs.
How do you want to pick the content?
Year-long introductory course.
Through 7 units students explore a wide variety of topics.
An introductory computer science course that empowers students to create authentic artifacts and engage with computer science as a medium for creativity, communication, problem solving, and fun.
Each unit of CS Discoveries can be used on its own with no prior experience required, which allows you to pick the exact units that work for your classroom.
Problem Solving & Computing
Use a problem-solving process to tackle puzzles, challenges, and real-world scenarios. Learn about computer input, output, storage, and processing to aid in problem-solving.
Interactive Animations & Games
Create programmatic images, animations, interactive art, and games. Gain familiarity with programming concepts and the design process.
Create and share content on web pages, exploring the creative potential of the web. Develop critical consumption skills, problem-solving abilities, and teamwork while programming.
The Design Process
Focus on considering the societal impact of computing. Through design challenges, students empathize with others' needs and develop solutions.
Data & Society
Emphasizes the role of data in problem-solving and the assistance of computers in this process. Cover representation systems and associated challenges. Discover how data collections aid problem-solving.
Creating Apps with Devices
Explore the role of physical devices in computing. Develop programs that utilize hardware inputs and outputs. There is a version of this unit for both the micro:bit and Circuit Playground.
AI & Machine Learning
Explore how computers learn from data. Develop machine learning projects around real-world data. Design a machine learning app to solve a personally relevant problem.
Dive deeper into one area with a set of units focused on a specific topic.
Focus on Hardware
Empowers students to use data and physical devices to solve problems.
Focus on Design with Purpose
Empowers students to think about the needs of users while designing websites and apps for devices.
Focus on Impact in Society
Empowers students to think about computer science as a tool to solve problems while considering the broader social impacts.
Focus on Creativity
Empowers students to be creative as they learn to create websites, animations and games, and apps for devices.
Focus on Coding
Empowers students to build their coding skills in web development, games and animation, and creating apps for devices.
Focus on Data
Empowers students to use data to solve problems.
Resources that support you every step of the way
Sign up for a Code.org account to get access to materials that will help you teach computer science with confidence. Code.org has extensive resources designed to support educators, even those without prior CS teaching experience.
Get step-by-step guidance, learning objectives, and assessment strategies for effective teaching.
Helpful resources include slide decks, activity guides, rubrics, and more — all organized in one place. Each lesson plan is accompanied by tips for classroom implementation, differentiation ideas, and extension activities to cater to students of all abilities.
Watch easy-to-understand overviews of computer science and programming concepts.
Code.org video series are designed specifically to support your classroom and are engaging and fun to watch.
We offer educators an organized, visually engaging, and pedagogically sound framework to deliver computer science lessons.
Code.org slide decks provide step-by-step instructions, examples, and interactive activities that align with curricular objectives.
Our curricula includes a comprehensive system of formative and summative assessment resources.
These include rubrics, checklists, mini-projects, end-of-chapter projects, student-facing rubrics, sample projects, and post-project tests — all designed to support teachers in measuring student growth, providing feedback, and evaluating student understanding.
Code.org's integrated development environments (IDEs) cater to students of all skill levels.
We offer a versatile and user-friendly platform that supports a variety of programming paradigms. This enables learners to seamlessly transition from block-based coding to text-based languages, and fosters creativity and innovation.
Professional learning that meets your needs
Get the support you need as you prepare to teach. Teachers love it, with over 90% ranking it the best professional development ever!
Our highly supportive Professional Learning Program will bring you together with a group of teachers to learn from each other as well as expert facilitators as you take on the first year of teaching the free curriculum to your students. In-person and virtual workshops are starting this summer.
Self-Paced Online Modules
Through reading, viewing videos, completing interactive puzzles, and reflecting on your learning, you will develop your own understanding while preparing to teach computer science in your classroom.
Frequently asked questions
CS Discoveries was written using both the K-12 Framework for Computer Science and the 2017 CSTA standards as guidance. Currently, every lesson in CS Discoveries contains mappings to the relevant 2017 CSTA standards. A summary of standards mappings can be found here . A Google Sheets version of the standards can be found at CSD Standards .
Our Professional Learning Program offers year-round support. The program kicks off with a five-day summer workshop where you'll have an opportunity to work hands-on with the curriculum and meet other teachers from your area. Throughout the year, we offer follow up workshops and forum support. You don't need any prior computer science experience to get started. And teachers love it! 90% rank it the best professional development ever. Click here to apply and learn more .
Have questions about professional development? Provide your contact information to a Regional Partner in your area .
Teachers who have a restricted schedule, unable to teach all units of CS Discoveries over the course of a school year, can now easily assign a specific set of CS Discoveries units based on what they want to focus on. These collections are still the same exact units found in CS Discoveries, simply grouped together based on our recommendations below to dive deep in a specific area of CS Discoveries. Each collection is approximately one semester or slightly less than one semester. Click here to see our Collections options .
For teachers who have an even more restricted schedule, they have the ability to assign just one unit at a time from CS Discoveries without assigning the entire course. We hope this helps support classrooms that teach units of CS Discoveries embedded as part of larger courses or when teaching computer science on a limited schedule. Click here to see our flexible units .
One potential cost to consider when teaching this course is printing. Many lessons have handouts that are designed to guide students through activities. While it is not required that all of these handouts be printed, many were designed to be printed and we highly recommend printing when possible.
Beyond printing, some lessons call for typical classroom supplies and manipulatives such as: Student journals, poster paper, markers/colored pencils, scissors, scrap paper, glue or tape, post-it notes or index cards (or similar sized scrap paper), and rulers or a straight edge of some kind.
In addition to those general course materials, the following items are called for in specific units:
Problem Solving and Computing
- Aluminum foil, container for water, pennies (note that pennies can be replaced with some other kind of weight of the same size). Alternate activities are available if you do not have access to these supplies.
Creating Apps with Devices (Option A and Option B)
- Option A: Classroom set of Circuit Playgrounds. Check out code.org/maker/circuitplayground for more details.
- Option B: Classroom set of micro:bit devices. Check out code.org/maker/microbit for more details.
- Maker supplies, such as empty tissue boxes or cardboard rolls or scratch paper
*Note: The Creating Apps with Devices unit has two implementation options - one for those using circuit playgrounds and one for those using micro:bit. Teachers should not buy both sets of devices or teach both unit options as they are equivalent and cover the same content.
With an approved teacher account, you can find answer keys in a blue "Teacher Only" panel that shows in the online lessons and activities.
Teachers in our Professional Learning Program will automatically be approved to view answer keys. If you need an approved teacher account, you can apply for access to protected teacher-only materials (answer keys, etc) through this form . Please keep in mind that it may take 3-5 business days to verify your account.
CS Discoveries is designed to fit naturally between our CS Fundamentals courses and our CS Principles course. While each of these courses is designed to be an age-appropriate entry point to computer science, students with previous experience will find many new topics to explore, and they will revisit familiar topics in novel and more challenging contexts.
For more information about our goals and approach to our courses, please see our Curriculum Values and our Professional Learning Values .
Support and questions
Still have questions? Reach out to us! We are here to help.
Our support team is here to answer any questions you may have about starting teaching with Code.org. You can also ask other teachers about their experience on our teacher forums.
Subscribe for updates
Sign up to receive monthly emails about Code.org's Computer Science Discoveries and get helpful reminders, tips, and updates sent right to your inbox.
You can unsubscribe at any time.
Please select your language
- Runestone in social media: Follow @iRunestone Our Facebook Page
- Table of Contents
- Peer Instruction (Instructor)
- Peer Instruction (Student)
- Change Course
- Instructor's Page
- Progress Page
- Edit Profile
- Change Password
- Scratch ActiveCode
- Scratch Activecode
- Instructors Guide
- About Runestone
- Report A Problem
- 1.1 Objectives
- 1.2 Getting Started
- 1.3 What Is Computer Science?
- 1.4 What Is Programming?
- 1.5 Why Study Data Structures and Abstract Data Types?
- 1.6 Why Study Algorithms?
- 1.7 Review of Basic Python
- 1.8 Getting Started with Data
- 1.9 Input and Output
- 1.10 Control Structures
- 1.11 Exception Handling
- 1.12 Defining Functions
- 1.13 Object-Oriented Programming in Python: Defining Classes
- 1.14 Summary
- 1.15 Key Terms
- 1.16 Discussion Questions
- 1.17 Programming Exercises
- 1.2. Getting Started" data-toggle="tooltip">
- 1.4. What Is Programming?' data-toggle="tooltip" >
1.3. What Is Computer Science? ¶
Computer science is difficult to define. This is probably due to the unfortunate use of the word “computer” in the name. As you are perhaps aware, computer science is not simply the study of computers. Although computers play an important supporting role as a tool in the discipline, they are just that–tools.
Computer science is the study of problems, problem-solving, and the solutions that come out of the problem-solving process. Given a problem, a computer scientist’s goal is to develop an algorithm , a step-by-step list of instructions for solving any instance of the problem that might arise. Algorithms are finite processes that if followed will solve the problem. Algorithms are solutions.
Computer science can be thought of as the study of algorithms. However, we must be careful to include the fact that some problems may not have a solution. Although proving this statement is beyond the scope of this text, the fact that some problems cannot be solved is important for those who study computer science. We can fully define computer science, then, by including both types of problems and stating that computer science is the study of solutions to problems as well as the study of problems with no solutions.
It is also very common to include the word computable when describing problems and solutions. We say that a problem is computable if an algorithm exists for solving it. An alternative definition for computer science, then, is to say that computer science is the study of problems that are and that are not computable, the study of the existence and the nonexistence of algorithms. In any case, you will note that the word “computer” did not come up at all. Solutions are considered independent from the machine.
Computer science, as it pertains to the problem-solving process itself, is also the study of abstraction . Abstraction allows us to view the problem and solution in such a way as to separate the so-called logical and physical perspectives. The basic idea is familiar to us in a common example.
Consider the automobile that you may have driven to school or work today. As a driver, a user of the car, you have certain interactions that take place in order to utilize the car for its intended purpose. You get in, insert the key, start the car, shift, brake, accelerate, and steer in order to drive. From an abstraction point of view, we can say that you are seeing the logical perspective of the automobile. You are using the functions provided by the car designers for the purpose of transporting you from one location to another. These functions are sometimes also referred to as the interface .
On the other hand, the mechanic who must repair your automobile takes a very different point of view. She not only knows how to drive but must know all of the details necessary to carry out all the functions that we take for granted. She needs to understand how the engine works, how the transmission shifts gears, how temperature is controlled, and so on. This is known as the physical perspective, the details that take place “under the hood.”
The same thing happens when we use computers. Most people use computers to write documents, send and receive email, surf the web, play music, store images, and play games without any knowledge of the details that take place to allow those types of applications to work. They view computers from a logical or user perspective. Computer scientists, programmers, technology support staff, and system administrators take a very different view of the computer. They must know the details of how operating systems work, how network protocols are configured, and how to code various scripts that control function. They must be able to control the low-level details that a user simply assumes.
The common point for both of these examples is that the user of the abstraction, sometimes also called the client, does not need to know the details as long as the user is aware of the way the interface works. This interface is the way we as users communicate with the underlying complexities of the implementation. As another example of abstraction, consider the Python math module. Once we import the module, we can perform computations such as
This is an example of procedural abstraction . We do not necessarily know how the square root is being calculated, but we know what the function is called and how to use it. If we perform the import correctly, we can assume that the function will provide us with the correct results. We know that someone implemented a solution to the square root problem but we only need to know how to use it. This is sometimes referred to as a “black box” view of a process. We simply describe the interface: the name of the function, what is needed (the parameters), and what will be returned. The details are hidden inside (see Figure 1 ).
Figure 1: Procedural Abstraction ¶
Browse Course Material
Course info, instructors.
- Dr. George Kocur
- Dr. Christopher Cassa
- Prof. Marta C. Gonzalez
- Civil and Environmental Engineering
As Taught In
- Programming Languages
- Software Design and Engineering
- Computational Science and Engineering
Learning Resource Types
Introduction to computers and engineering problem solving, course description.
This course presents the fundamentals of object-oriented software design and development, computational methods and sensing for engineering, and scientific and managerial applications. It cover topics, including design of classes, inheritance, graphical user interfaces, numerical methods, streams, threads, sensors, and data structures. Students use Java ® programming language to complete weekly software assignments.
How is 1.00 different from other intro programming courses offered at MIT?
1.00 is a first course in programming. It assumes no prior experience, and it focuses on the use of computation to solve problems in engineering, science and management. The audience for 1.00 is non-computer science majors. 1.00 does not focus on writing compilers or parsers or computing tools where the computer is the system; it focuses on engineering problems where the computer is part of the system, or is used to model a physical or logical system.
1.00 teaches the Java programming language, and it focuses on the design and development of object-oriented software for technical problems. 1.00 is taught in an active learning style. Lecture segments alternating with laboratory exercises are used in every class to allow students to put concepts into practice immediately; this teaching style generates questions and feedback, and allows the teaching staff and students to interact when concepts are first introduced to ensure that core ideas are understood. Like many MIT classes, 1.00 has weekly assignments, which are programs based on actual engineering, science or management applications. The weekly assignments build on the class material from the previous week, and require students to put the concepts taught in the small in-class labs into a larger program that uses multiple elements of Java together.
Introduction to Scientific Computing and Problem Solving
Welcome to CS4, Introduction to Scientific Computing and Problem Solving . CS4 provides an introduction to using computers to solve STEM (Science, Technology, Engineering, and Mathematics) data analysis, visualization, simulation, and numerical analysis problems. The course begins with an introduction to the basics of programming, accompanied by several applications of fundamental coding elements and concepts. As we do this we will explore some of the breadth of Computer Science as a discipline. The first part of the course (which runs until Spring Break) will be taught in Python. Following this, we will explore more specialized topics related to scientific computing and mathematics that will allow students to access and analyze a number of "real world" problems. The later portion of the course will be taught in MATLAB.
Requirements: No prior programming experience is required to take this course (Python and MATLAB are easy and fun to use!). A calculus course (perhaps in high school) is highly recommended.
If you have any feedback about assignments or the course in general, please fill out the Anonymous Feedback Form to let the course staff know. If you have any academic/SEAS accommodations that we should be aware of, please fill out this form so that the course staff can best support you. We understand that being a student can be stressful and that certain circumstances can affect your performance in the course. Please refer to the syllabus for more information about receiving academic support for CS0040 or email the HTAs or Prof. Gaudette for more information regarding accommodations. You can also find some resources the CS department has compiled for students here and a helpful message from your TAs here
Quick links, working from home, how do ta hours work, diversity and inclusion goals.
Jason Gaudette (jegaudet)
Welcome to CS4! I am happy to be your instructor this semester. As a research engineer with loads of real-world experience in scientific computing, my goal is to teach you the art and joy of the field. Outside of my main job, I coach kids in FIRST LEGO robotics, volunteer for the IEEE, teach programming and electronics courses, sail a Hobie Cat, and run with my dog Luna."
E-mail us at [email protected] if you have administrative or private questions.
Griffin Kao (gk16)
Hi there, I’m a junior from Philadelphia studying computer science and engineering. A fun fact about me is that Kobe Bryant went to my high school!
Hersh Gupta (hgupta1)
Hey everybody! My name is Hersh and I’m a junior concentrating in chemistry and computational biology. I’m a big sports fan and love going on Netflix binges but never actually finishing the show.
Joy Bestourous (jbestour)
Hi hello! I'm a junior studying computer science while filling pre-med requirements (and maybe pre-law! Who knows!). I like New York pizza, iced coffee, going to the gym, dancing, and singing Disney songs. Loudly.
E-mail us at [email protected] or post a question (privately!) on Piazza if you have any questions about the course.
Annie He (ahe6)
Hey y’all! I’m a junior from Dallas, TX concentrating in computational biology. If you don’t see me in the scili, I’m either chilling in my pjs or exploring new restaurants! I also love to rock climb, ski, bungee jump, basically anything adventurous! :)
Alex Liu (aliu31)
I am a junior concentrating in Applied Mathematics and Computer Science. I’m from Eugene, Oregon and outside of class I am involved with the Socially Responsible Investment Fund, I play golf whenever I get the chance, and I try my best to keep up on practicing the Piano. I also run Brown Data Science, a club that, much like this class, brings educational opportunities related to Data Science to undergraduates of all academic backgrounds.
Aryan Srivastava (asriva11)
I am a freshman concentrating in CS (probably). I love watching and playing basketball (1v1 me), reading and talking philosophy, and watching artisan videos on youtube! My favorite thing to eat at Brown is a warm Blue Room Chocolate Chip Muffin.
Ellen Ling (eling)
Hi, I’m a junior from Shanghai studying physics and CS. I like good movies and dance and babies!
Irene Rhee (irhee)
Sup dudes, my name is Irene and I’m a junior from Corvallis, OR studying computer science! I like to drink my coffee black, am part of a dance group called Daebak (come to our spring show!!), and enjoy dim sum, boba, and tagging people in memes (go like my post on subtle asian traits). My favorite word is lit.
Joseph Chen (jchen88)
Hey everyone! I’m a junior from California concentrating in Neuroscience and CS, and I’m a big fan of all things related to swimming, playing basketball, Game of Thrones, and stand-up comedy.
Jarrett Huddleston (jhuddle1)
Hey! I’m a sophomore from Eastern Massachusetts concentrating in computer science. Outside of classes I enjoy camping and music, and I’m always looking for a good book!
Milla Shin (mshin7)
I’m a junior from Tokyo studying computer science. I like going to the beach. I like food and cooking! I like snowboarding and scuba diving! I love sweet potatoes, avocado, and matcha! Yummy. I like puppies but I like babies too.
Pedro de Freitas (pfreitas)
Senior from Portland, Maine studying cognitive neuroscience. I’m a lyra performer/instructor who also enjoys painting.
Solomon Rueschemeyer-Bailey (sruesche)
I am a junior trying not to let school get in the way of college. Come to my hours or my section if you want to learn about: The Bucket Theorem, whether or not true Love exists, and the future of teleportation.
Tiffany Ding (tding5)
Hi! I’m a sophomore from upstate NY studying applied math, economics, and computer science. When I’m not in the CIT, you can find me going for a run or taking photos for the Brown Daily Herald. I also love puns, penguins, and podcasts!
While a number of definitions of artificial intelligence (AI) have surfaced over the last few decades, John McCarthy offers the following definition in this 2004 paper (link resides outside ibm.com), " It is the science and engineering of making intelligent machines, especially intelligent computer programs. It is related to the similar task of using computers to understand human intelligence, but AI does not have to confine itself to methods that are biologically observable."
However, decades before this definition, the birth of the artificial intelligence conversation was denoted by Alan Turing's seminal work, " Computing Machinery and Intelligence "(link resides outside ibm.com), which was published in 1950. In this paper, Turing, often referred to as the "father of computer science", asks the following question, "Can machines think?" From there, he offers a test, now famously known as the "Turing Test", where a human interrogator would try to distinguish between a computer and human text response. While this test has undergone much scrutiny since its publish, it remains an important part of the history of AI as well as an ongoing concept within philosophy as it utilizes ideas around linguistics.
Stuart Russell and Peter Norvig then proceeded to publish, Artificial Intelligence: A Modern Approach (link resides outside ibm.com), becoming one of the leading textbooks in the study of AI. In it, they delve into four potential goals or definitions of AI, which differentiates computer systems on the basis of rationality and thinking vs. acting:
- Systems that think like humans
- Systems that act like humans
- Systems that think rationally
- Systems that act rationally
Alan Turing’s definition would have fallen under the category of “systems that act like humans.”
At its simplest form, artificial intelligence is a field, which combines computer science and robust datasets, to enable problem-solving. It also encompasses sub-fields of machine learning and deep learning, which are frequently mentioned in conjunction with artificial intelligence. These disciplines are comprised of AI algorithms which seek to create expert systems which make predictions or classifications based on input data.
Over the years, artificial intelligence has gone through many cycles of hype, but even to skeptics, the release of OpenAI’s ChatGPT seems to mark a turning point. The last time generative AI loomed this large, the breakthroughs were in computer vision, but now the leap forward is in natural language processing. And it’s not just language: Generative models can also learn the grammar of software code, molecules, natural images, and a variety of other data types.
The applications for this technology are growing every day, and we’re just starting to explore the possibilities. But as the hype around the use of AI in business takes off, conversations around ethics become critically important. To read more on where IBM stands within the conversation around AI ethics , read more here .
Multiply the power of AI for your enterprise with IBM’s next-generation AI and data platform.
IBM acquires Manta to complement data and AI governance capabilities
IBM watsonx Orchestrate
IBM watsonx Assistant
Explore Gen AI learning for developers
Weak AI—also called Narrow AI or Artificial Narrow Intelligence (ANI)—is AI trained and focused to perform specific tasks. Weak AI drives most of the AI that surrounds us today. ‘Narrow’ might be a more accurate descriptor for this type of AI as it is anything but weak; it enables some very robust applications, such as Apple's Siri, Amazon's Alexa, IBM watson, and autonomous vehicles.
Strong AI is made up of Artificial General Intelligence (AGI) and Artificial Super Intelligence (ASI). Artificial general intelligence (AGI), or general AI, is a theoretical form of AI where a machine would have an intelligence equaled to humans; it would have a self-aware consciousness that has the ability to solve problems, learn, and plan for the future. Artificial Super Intelligence (ASI)—also known as superintelligence—would surpass the intelligence and ability of the human brain. While strong AI is still entirely theoretical with no practical examples in use today, that doesn't mean AI researchers aren't also exploring its development. In the meantime, the best examples of ASI might be from science fiction, such as HAL, the superhuman, rogue computer assistant in 2001: A Space Odyssey.
Since deep learning and machine learning tend to be used interchangeably, it’s worth noting the nuances between the two. As mentioned above, both deep learning and machine learning are sub-fields of artificial intelligence, and deep learning is actually a sub-field of machine learning.
Deep learning is actually comprised of neural networks. “Deep” in deep learning refers to a neural network comprised of more than three layers—which would be inclusive of the inputs and the output—can be considered a deep learning algorithm. This is generally represented using the diagram below.
The way in which deep learning and machine learning differ is in how each algorithm learns. Deep learning automates much of the feature extraction piece of the process, eliminating some of the manual human intervention required and enabling the use of larger data sets. You can think of deep learning as "scalable machine learning" as Lex Fridman noted in same MIT lecture from above. Classical, or "non-deep", machine learning is more dependent on human intervention to learn. Human experts determine the hierarchy of features to understand the differences between data inputs, usually requiring more structured data to learn.
"Deep" machine learning can leverage labeled datasets, also known as supervised learning, to inform its algorithm, but it doesn’t necessarily require a labeled dataset. It can ingest unstructured data in its raw form (e.g. text, images), and it can automatically determine the hierarchy of features which distinguish different categories of data from one another. Unlike machine learning, it doesn't require human intervention to process data, allowing us to scale machine learning in more interesting ways.
Generative AI refers to deep-learning models that can take raw data — say, all of Wikipedia or the collected works of Rembrandt — and “learn” to generate statistically probable outputs when prompted. At a high level, generative models encode a simplified representation of their training data and draw from it to create a new work that’s similar, but not identical, to the original data.
Generative models have been used for years in statistics to analyze numerical data. The rise of deep learning, however, made it possible to extend them to images, speech, and other complex data types. Among the first class of models to achieve this cross-over feat were variational autoencoders, or VAEs, introduced in 2013. VAEs were the first deep-learning models to be widely used for generating realistic images and speech.
“VAEs opened the floodgates to deep generative modeling by making models easier to scale,” said Akash Srivastava , an expert on generative AI at the MIT-IBM Watson AI Lab. “Much of what we think of today as generative AI started here.”
Early examples of models, like GPT-3, BERT, or DALL-E 2, have shown what’s possible. The future is models that are trained on a broad set of unlabeled data that can be used for different tasks, with minimal fine-tuning. Systems that execute specific tasks in a single domain are giving way to broad AI that learns more generally and works across domains and problems. Foundation models, trained on large, unlabeled datasets and fine-tuned for an array of applications, are driving this shift.
When it comes to generative AI, it is predicted that foundation models will dramatically accelerate AI adoption in enterprise. Reducing labeling requirements will make it much easier for businesses to dive in, and the highly accurate, efficient AI-driven automation they enable will mean that far more companies will be able to deploy AI in a wider range of mission-critical situations. For IBM, the hope is that the power of foundation models can eventually be brought to every enterprise in a frictionless hybrid-cloud environment.
There are numerous, real-world applications of AI systems today. Below are some of the most common use cases:
- Speech recognition: It is also known as automatic speech recognition (ASR), computer speech recognition, or speech-to-text, and it is a capability which uses natural language processing (NLP) to process human speech into a written format. Many mobile devices incorporate speech recognition into their systems to conduct voice search—e.g. Siri—or provide more accessibility around texting.
- Customer service: Online virtual agents are replacing human agents along the customer journey. They answer frequently asked questions (FAQs) around topics, like shipping, or provide personalized advice, cross-selling products or suggesting sizes for users, changing the way we think about customer engagement across websites and social media platforms. Examples include messaging bots on e-commerce sites with virtual agents , messaging apps, such as Slack and Facebook Messenger, and tasks usually done by virtual assistants and voice assistants.
- Computer vision: This AI technology enables computers and systems to derive meaningful information from digital images, videos and other visual inputs, and based on those inputs, it can take action. This ability to provide recommendations distinguishes it from image recognition tasks. Powered by convolutional neural networks, computer vision has applications within photo tagging in social media, radiology imaging in healthcare, and self-driving cars within the automotive industry.
- Recommendation engines: Using past consumption behavior data, AI algorithms can help to discover data trends that can be used to develop more effective cross-selling strategies. This is used to make relevant add-on recommendations to customers during the checkout process for online retailers.
- Automated stock trading: Designed to optimize stock portfolios, AI-driven high-frequency trading platforms make thousands or even millions of trades per day without human intervention.
The idea of 'a machine that thinks' dates back to ancient Greece. But since the advent of electronic computing (and relative to some of the topics discussed in this article) important events and milestones in the evolution of artificial intelligence include the following:
- 1950: Alan Turing publishes Computing Machinery and Intelligence. In the paper, Turing—famous for breaking the Nazi's ENIGMA code during WWII—proposes to answer the question 'can machines think?' and introduces the Turing Test to determine if a computer can demonstrate the same intelligence (or the results of the same intelligence) as a human. The value of the Turing test has been debated ever since.
- 1956: John McCarthy coins the term 'artificial intelligence' at the first-ever AI conference at Dartmouth College. (McCarthy would go on to invent the Lisp language.) Later that year, Allen Newell, J.C. Shaw, and Herbert Simon create the Logic Theorist, the first-ever running AI software program.
- 1967: Frank Rosenblatt builds the Mark 1 Perceptron, the first computer based on a neural network that 'learned' though trial and error. Just a year later, Marvin Minsky and Seymour Papert publish a book titled Perceptrons , which becomes both the landmark work on neural networks and, at least for a while, an argument against future neural network research projects.
- 1980s: Neural networks which use a backpropagation algorithm to train itself become widely used in AI applications.
- 1997: IBM's Deep Blue beats then world chess champion Garry Kasparov, in a chess match (and rematch).
- 2011: IBM watson beats champions Ken Jennings and Brad Rutter at Jeopardy!
- 2015: Baidu's Minwa supercomputer uses a special kind of deep neural network called a convolutional neural network to identify and categorize images with a higher rate of accuracy than the average human.
- 2016: DeepMind's AlphaGo program, powered by a deep neural network, beats Lee Sodol, the world champion Go player, in a five-game match. The victory is significant given the huge number of possible moves as the game progresses (over 14.5 trillion after just four moves!). Later, Google purchased DeepMind for a reported USD 400 million.
- 2023 : A rise in large language models, or LLMs, such as ChatGPT, create an enormous change in performance of AI and its potential to drive enterprise value. With these new generative AI practices, deep-learning models can be pre-trained on vast amounts of raw, unlabeled data.
Put AI to work in your business with IBM’s industry-leading AI expertise and portfolio of solutions at your side.
Reinvent critical workflows and operations by adding AI to maximize experiences, decision-making and business value.
AI is changing the game for cybersecurity, analyzing massive quantities of risk data to speed response times and augment under-resourced security operations.
IBM has been a leader in advancing AI-driven technologies for enterprises and has pioneered the future of machine learning systems for multiple industries. Learn how IBM watson gives enterprises the AI tools they need to transform their business systems and workflows, while significantly improving automation and efficiency.
- Skip to primary navigation
- Skip to main content
- Skip to footer
EDUInput- An online learning platform for Mcat, JEE, NEET and UPSC students.
An online learning platform for Mcat, JEE, NEET and UPSC students
Problem Solving Techniques in Computer Science
Problem-solving is the process of identifying a problem and finding the best solution for it. Problem-solving is a technique that can be developed by following a well-organized approach. Every day we encounter many problems and solve them.
Every problem is different. Some problems are very difficult and are needed more attention to recognize the solution.
A problem may be solved by multiple methods. One solution may be faster, cheaper, and more reliable than others. It is important to choose a suitable worthy solution.
Different strategies, techniques, and tools are used to solve a problem. Computers are used as a tool to solve complex problems by developing computer programs.
Computer programs contain different instructions for computers. A programmer writes instructions and the computer executes these instructions to solve a problem. A person can be a good programmer if he has the skill of solving problems.
Advantages of Computer Program
Properties of algorithm, logic design, advantages of algorithm, uses of logic flowchart, problem-solving techniques..
There are three different types of problem-solving techniques.
A set of instructions given to a computer to solve a problem is called a program.
A computer works according to the given instructions in the program. Computer programs are written in programming languages. A person who develops a program is called a programmer.
The programmer develops programs to instruct the computer on how to process data into information. The programmer uses programming languages or tools to write programs.
Different advantages of computer programs are as follows:
- A computer program can solve many problems by giving instructions to the computer.
- A computer program can be used to perform a task again and again and fastly.
- A program can process a large amount of data easily.
- It can display the results in different styles.
- The processing of a program is more efficient and less time-consuming.
- Different types of programs are used in different fields to perform certain tasks.
Algorithms & Pseudo Code
An algorithm is a step-by-step procedure to solve a problem. The process of solving
problem becomes simpler and easier with help of algorithm. It is better to write an algorithm
before writing the actual computer program.
Following are some properties of an algorithm:
- The given problem should be broken down into simple and meaningful steps.
- The steps should be numbered sequentially.
- The steps should be descriptive and written in simple English.
Algorithms are written in a language that is similar to simple English called pseudocode. There is no standard to write pseudo code. It is used to specify program logic in an English-like manner that is independent of any particular programming language.
Pseudocode simplifies program development by separating it into two main parts.
In this part, the logic of the program is designed. We specify different steps required to solve the problem and the sequence of these steps.
In this part, the algorithm is converted into a program. The steps of the algorithm are
translated into instructions of any programming language.
The use of pseudo-code allows the programmer to focus on the planning of the program. After the planning is final, it can be written in any programming language.
The following algorithm inputs two numbers calculate the sum and then displays the result on the screen.
4. Total A+B
5. Display Total
The following algorithm inputs the radius from the user and calculates the area of a circle.
Hint: Area 3.14* radius* radius)
2. Input radius in r
3. area = 3.14* r* r
4. Print area
There are many advantages of an algorithm
Writing algorithm and program separately simplifies the overall task by dividing it into two simpler tasks. While writing the algorithm, we can focus on solving the problem instead of concentrating on a particular language.
An algorithm is written so that the code may be written in any language. Using an algorithm, the program could be written in Visual Basic, Java or C++, etc.
Ease of Understanding
It is not necessary to understand a particular programming language to understand an algorithm. It is written in an English-like manner.
A flowchart is a combination of two words flow and chart. A chart consists of different symbols to display information about any program. Flow indicates the direction processing that takes place in the program.
Flowchart is a graphical representation of an algorithm. It is a way of visually presenting the flow of data, operations performed on data, and the sequence of these operations.
Flowchart is similar to the layout plan of a building. A designer draws the layout plan of the building before constructing it. Similarly, a programmer prefers to design the flowchart before writing the computer program. Flowchart is designed according to the defined rule.
Flowchart is used for the following reasons
- Flowchart is used to represent an algorithm in a simple graphical manner.
- Flowchart is used to show the steps of an algorithm easily.
- Flowchart is used to understand the flow of the program.
- Flowchart is used to improve the logic for solving a problem.
- Programs can be reviewed and debugged easily.
- Chapter-Getting Started with C
Difference between Analog signal and Digital signal
17 Examples of Presentation Software
Data Link Layer of OSI Model
Software- Definition, types of Software
Leave a reply cancel reply.
Your email address will not be published. Required fields are marked *
Save my name, email, and website in this browser for the next time I comment.
Get updates about new courses
9th Class 10th Class 11 Class 12 Class
Help | Advanced Search
Computer Science > Computation and Language
Title: large language model for science: a study on p vs. np.
Abstract: In this work, we use large language models (LLMs) to augment and accelerate research on the P versus NP problem, one of the most important open problems in theoretical computer science and mathematics. Specifically, we propose Socratic reasoning, a general framework that promotes in-depth thinking with LLMs for complex problem-solving. Socratic reasoning encourages LLMs to recursively discover, solve, and integrate problems while facilitating self-evaluation and refinement. Our pilot study on the P vs. NP problem shows that GPT-4 successfully produces a proof schema and engages in rigorous reasoning throughout 97 dialogue turns, concluding "P $\neq$ NP", which is in alignment with (Xu and Zhou, 2023). The investigation uncovers novel insights within the extensive solution space of LLMs, shedding light on LLM for Science.
- Download PDF
- Other Formats
References & Citations
- Google Scholar
- Semantic Scholar
BibTeX formatted citation
Bibliographic and Citation Tools
Code, data and media associated with this article, recommenders and search tools.
arXivLabs: experimental projects with community collaborators
arXivLabs is a framework that allows collaborators to develop and share new arXiv features directly on our website.
Both individuals and organizations that work with arXivLabs have embraced and accepted our values of openness, community, excellence, and user data privacy. arXiv is committed to these values and only works with partners that adhere to them.
Have an idea for a project that will add value for arXiv's community? Learn more about arXivLabs .
College of Engineering
The Bachelor of Science in Computer Engineering prepares students to apply their knowledge and skills to solve technical problems through the design of computing hardware and software, embedded systems, computer networks and systems. Students develop problem-solving skills through work with faculty, research in state-of-the-art labs and internship opportunities with companies such as Texas Instruments, Raytheon Technologies and Microsoft.
Gain practical experience through internships with Blue Origin, Google and Intel
Participate in hands-on projects in research and teaching labs
Join the student chapter of the Institute for Electrical and Electronics Engineers (IEEE)
Conduct Research as an Undergraduate
Nicholas Lopez explored semiconductors and physics in his undergraduate research, participated in national conferences and completed internships with Texas Instruments in Santa Clara, California. Now a graduate student in computer engineering, he is focusing his thesis on cybersecurity and the Internet of Things by researching differential privacy across different sectors, including location privacy, healthcare and accessibility. From the support of his professors and peers to the assistance he received from UTEP’s Career Center, Lopez’s experience at UTEP will allow him to take his career to the next level.
Computer engineering graduates pursue career opportunities with companies such as Texas Instruments, Raytheon Technologies, Intel, Microsoft, Amazon, Google, Boeing, Lockheed Martin, IBM, NASA, Blue Origin, national laboratories and more. Graduates also are being recruited in finance, health and other sectors that depend on computing technology for their operations.
- Computer hardware engineer
- Software engineer
- Embedded systems engineer
- Machine learning engineer
- Computer network architect
- Network systems engineer
- Integrated circuit designer
MILLIONS in scholarships awarded every year!
UTEP offers grants and scholarships that may cover your entire tuition.
in grants and scholarships paid to undergraduate students.
of undergraduate students received grants or scholarships.
average amount first-year students receive in grants and scholarships.
- Events Calendar
- Parking and Transportation
- University Bookstore
- UTEP Directory
- Public Course Information
- Cares Act Compliance
- Clery Crime Statistics
- Emergency Information
- Mental Health Resources
- Texas Veterans Portal
- Report Fraud
- Required Links
- State Reports
- Title IX Reporting
- Title IX Sexual Misconduct Policy
- Web Accessibility
Computer Problem Solving and Troubleshooting ➡️ Digital Activity
- Google Apps™
- Internet Activities
What educators are saying
Also included in.
Are your students really struggling with basic computer troubleshooting? This 15 query unit is great for partner research or an extended individual research project. Each query is appropriate for upper elementary or middle school students. By the end of learning these 15 common computer troubleshooting problems, your classroom will run so smoothly without all of the "how do I..." questions. Feel free to add your own in addition to the 15 included. The queries on the slides are editable.
1. What does it mean when a red squiggly line appears under a typed word? How do we fix it?
2. How do you copy and paste from the internet into a program?
3. How do you bookmark a website in each of the internet browsers?
4. How do you select the best website from a search engine list?
5. What do you do if the volume is not working?
6. What is the right mouse button for?
7. How do you find the date on the computer?
8. How do you get a picture into a file if copy and paste doesn’t work?
9. How do you crop a picture? Re-size it?
10. How do you add a folder to your “My Documents” file?
11. How do you save a document or presentation?
12. What do you do if a webpage doesn’t load or only loads a little bit?
13. Where can you go on the internet at school?
14. How do you print from the internet? How is this different than printing a document?
15. What keyboard shortcuts do we need to know?
Who is this for?
Classrooms where there is a mix of ability levels for computer problem solving. This is a google slides resource so you will need a way to share the link with your students.
What do I get in this resource?
A link to a Google Slides file with the directions and 15 slides of computer problem solving queries and space to "show what you know" on each slide. Use as an individual project, partner work, or as a whole class to learn the basics of computer know-how.
**BENEFITS OF GOOGLE CLASSROOM** ♥ PAPERLESS! ♥ INTEGRATE TECHNOLOGY INTO THE CLASSROOM! ♥ IMPROVE STUDENT COMPUTER SKILLS! ♥ INCREASE STUDENT ENGAGEMENT! ♥ ACCESS MATERIALS ANYWHERE! Do you have a Google Classroom? Are you looking for digital ways to incorporate common core skills and make your students more adept at utilizing technology in their daily learning? If so, then this is the product for you! #tptdigital Don't have Google accounts yet? No problem! Students can still access this presentation if you set it to be "Anyone with the link can edit". They can add text, just not images. You would have to create a separate presentation for each student and supply them with the url. This product comes as a link in a folder. First, make sure you are signed into your Google account. Double click the link and you will be prompted to "Make a Copy". Rename the Writing Journal whatever you would like. It will be sent directly to your drive! Disperse to your students via Google Classroom, Google Drive Shared folder, your Learning Platform, etc..
How to get TPT credit to use on future purchases: • Please go to your My Purchases page (you may need to login). Beside each purchase you'll see a Provide Feedback button. Simply click it and you will be taken to a page where you can give a quick rating and leave a short comment for the product. Each time you give feedback, TPT gives you feedback credits that you use to lower the cost of your future purchases. I value your feedback greatly as it helps me determine which products are most valuable for your classroom so I can create more for you. ☺ Do you like this style of teaching? Be the first to know about my new discounts, freebies and product launches: • Look for the green star next to my store logo and click it to become a follower. You will now receive email updates about this store.☺
Copyright Brittany Washburn. All rights reserved by author. This product is to be used by the original downloader only. Copying for more than one teacher, classroom, department, school, or school system is prohibited. This product may not be distributed or displayed digitally for public view. Failure to comply is a copyright infringement and a violation of the Digital Millennium Copyright Act (DMCA). Clipart and elements found in this file are copyrighted and cannot be extracted and used outside of this file without permission or license. Intended for classroom and personal use ONLY. See product file for clip art and font credits.
Questions & Answers
Brittany washburn technology skills resources.
- We're hiring
- Help & FAQ
- Student privacy
- Terms of service
- Tell us what you think