## CSC 101L: Introduction to Programming Lab

### 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. The lab is designed to practice programming-related problems on the listed topics. Lab programming problems are derived based on the weekly lecture topics and in relation to real-life programming-solving problem scenarios.

### Course content

Week wise following contents are covered. The theory, practice, and principles of programming with basic example is covered in the theory classes, and the hands-on programming and problem-solving skills are practiced in the Lab. A comprehensive lab manual with a diverse set of problems on weekly topics is designed by the
participating faculties. A Lab manual describing all these problems set categorized according to weekly lecture topic and difficulty level (3 difficulty levels) are produced and followed across all the sections.

1. Environment Setup, IDE / Jupyter Notebook, Console I/O Become familiar with what exactly is the Python programming language, Setup, familiarize and run simple code
using Python IDE, learn to print, take user input, format 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), Properties of int, float, 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 use off different types of operators.
4. Conditional Statements (Simple, nested) Decision making in programming (A clear concept of how a decision is made by evaluating conditions in the world of programming), Use of Conditional statements in decision making, Introduce flow-chart for making a decision using conditional statement, 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, Break and continue statements in relation to using a 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 for 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 real-life usage scenario (e.g., an automated chocolate factory), Show difference between code solution with and without function, Allow student 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 example show 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 manipulate (read/write/append) file, Read/write data back and forth in a file.

### Course objectives

1. Introduce the students to the disciplines of computer science, the world of programming.
2. Students will be able to understand the scope of programming in solving real-life problems.
3.  Student 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.

### References

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