At the end of this course, students will be able to:

**Identify**the types of computation and**describe**digital computation in detail.**Design**simple combination circuits for simple computational problems.**Outline**the concepts of the Von Neumann Architecture and the Turing Machine, and**describe**how a modern computer relates to them.**Understand**and**use**how information is represented in a modern computer and how instructions are executed.**Describe**the types of programming languages, and the paradigms.**Understand**the concept of basic data types, such as int, float, bool as well as container data types, such as list, tuple, string.**Differentiate**computational evaluation of expressions from mathematical evaluation due to concepts such as overflow, side-effect, and truncation.**Understand**and**apply**structured programming concepts by elaborating on sequential, selective, repetitive structures, such as statements, if/switch/case statements, for/while statements and functions.**Interpret**a computational problem specification and algorithmic solution and**implement**a solution in Python to solve that problem.