## CSC 101: Introduction to Programming

### Course rationale

This is an introductory course in Computer Science. The main objective of this course is to help the student develop a strong foundation in computer programming using Python. The programming concepts that will be covered in the class are variable, input, output, arithmetic operation, operators, control structures, logical operation, conditional statements, iterative statements, basic data structure (e.g., list, tuple, and dictionary), string, function, basics of exception handling and file I/O, basics of data collection, Processing, and visualization. Each lecture would involve solving several programming problems on the learned topic using a designated IDE. After successful completion of the course, a student will be able to break down a complex programming problem into smaller parts, solve them, and write the solution in python.

### Course content

1. Environment Setup, IDE / Jupyter Notebook, Console I/O: Become familiar with what exactly the Python programming language, Setup, familiarizing and running simple code using Python IDE, learning to print, taking user input,
formatting text to display in the console, basics of string, and variables.
2. Variables and Data Types: What are variables, what are their properties, Why are variables required, How python allocates and manages memory for variables while we declare and assign value to them, Variable naming
convention and concept of reserve keywords, What are the basic data types in Python (int, float, string, char, bool), and Properties of (int, float, and string variables).
3. Operators (Boolean, arithmetic, logical, and others): Types of Operators available in Python (Arithmetic, Comparison (Relational), Assignment, Logical, Bitwise, Membership, Identity), What is the use of these operators
in developing programming logic / solving a problem, Detail Code samples (relevant) to explain the use of different types of operators.
4. Conditional Statements (Simple, nested): Decision-making in programming (A clear concept of how the decision is made by evaluating conditions in the world of programming), Use of Conditional statements in decision-making,
Introduce a flowchart for making decisions using conditional statements, Conditional statements in Python: if, if-else, if-elif-else, nested if.
5. Loops (Simple, nested): What are recurring problems, define loop in general terms and use a loop in solving recurring problems, Introduce different types of loops in Programming, Explain While Loop and for loop with
example scenarios, Nested loops, and Break and continue statements in relation to using the loop.
6. Basic data structure (List, Tuple, set): Introduce the concept of data structure and its need, Give real-life problem scenarios to reason the need of using a data structure to store clustered data, Bring the definition of List,
Tuples and Sets in this context to show its’ effectiveness, Example problems and their solution using List, Tuples, and Sets.
7. Modularization (Function): Define function from the perspective of modularization/reusability /maintainability/separation of concept /divide-and-conquer in solving complex and recurring problems, Use of function: Argue from a real-life usage scenario (e.g., an automated chocolate factory), Show the difference between code solution with and without function, Allow students to solve problems (conceptually) using functions,
Structure of a function, e.g., parameters, returns a value, calling a function, return from a function, With simple examples showing step-by-step how a function executes. Let the student understand how a program execution flows
when a function is called, executed, and returned, Example problems, and their implementation using functions.
8. Files (File I/O): Introduce the concept of File as a secondary storage structure/persistence storage, What is the distinction between in-memory storage (e.g., variables/data structures) and File, Learn how to create and

### Course objectives

1. Introduce the students to the disciplines of computer science, and the world of programming.
2. Students will be able to understand the scope of programming in solving real-life problems.
3. Students will learn different fundamental building blocks of programming with hands-on programming examples.
4. Students will grow in confidence to solve real-life problems (e.g., mathematical, computational, logical)using the programming concepts learned.
5. Student will learn the basics of data storage and manipulation.

### Textbook(s)

1. Python Crash Course, 2nd Edition: A Hands-On, Project-Based Introduction to Programming, EricMatthes.
2. Learning Python, 5th Edition, Mark Lutz.

### Reference book(s)

1. Automate the Boring Stuff with Python, 2nd Edition: Practical Programming for Total Beginners, Al Sweigart.