Introduction to computing

Outline:

Introduction to problem-solving using computers

What is a problem?

What is a solution? 

 What is an efficient solution?

What is a computer? 

How can a solution be communicated to computers?

What is an algorithm and why do we need to study an algorithm?

What are Turing primitives

What is a flowchart, what is its role in learning computer programming?

What is a program, and how can we translate a flowchart or algorithms to a computer program?

 What is a computer language? Why do we need a language or multiple languages?

What is Python and what paradigms it is developed in and what paradigms does it support? 

What is the Object-Oriented Programming paradigm and what are the alternative paradigms? 

What are some examples of python objects? 

What is an error? How many types of errors you could think of ?

Can you relate the errors in a computer program to errors people make in learning natural languages such as English?

Which error is the most difficult to detect and remove?

How to make sure a program is correct? How do we make sure if a mathematical predicate/statement/solution is correct?

What is a proof?

What is testing (automated testing using doctest)? Types of testing-- Unit and integration testing. 

What are the basic building blocks of a computer?

What is memory?

What number system computer understands?

What are variables/names? What are values? 

What is static and dynamic typing? 

What is an assignment?

What is a function (mathematical definition)? 

What is a function in computer programing? 

What are arguments and parameters?

What is a return value and what gets returned if there is no return statement?

Draw an equivalence between Turing primitives, flowchart boxes, and programming constructs.

What are the bare minimum things that we need to communicate to the computer? What are the advantages?

What is the control flow? 

What are conditionals? 

Can we chain of conditionals?

Can we nest conditionals? 

What are loops? 

Nested loops? Why do we need it? 

How to break a loop?

What is an infinite loop? Explain a scenario in which it is inevitable.

What are collections? What are the types that are available in Python to hold a collection of values?

What are lists?

What types of operations can be performed on a collection such as lists?

What are strings?

What operations can be performed on strings?

What are mutation and rebinding and how does it apply to lists and strings?

What are tuples? What are the usages of tuples in programming situations? 

What are dictionaries? What are they useful for?

How to work with a collection of elements? 

Loops and collections (list, tuple, dictionaries)

Collection of collections?  (list of lists, tuples, dictionaries; tuple of lists, tuple, dictionaries etc.)

Provide some examples that use both, lists and dictionaries. 

Provide some examples that use lists and tuples

Provide some examples that use tuples and dictionaries

Common problems with common patterns and programming strategies:

Creational: 

Structural:  

Behavioral: 

What is a flag variable and what are the scenarios we need it?