Course Syllabus

Computer Programming I (Python)

Course Information

Course Title: Computer Programming I (Python)
Target Audience: Math Students
Level: Introductory
Prerequisites: None

Course Description

This course provides a comprehensive introduction to programming using Python. Students will learn fundamental programming concepts and develop practical coding skills through hands-on exercises and projects. The course emphasizes problem-solving approaches that are particularly relevant to mathematical applications.

Learning Objectives

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

  1. Write, execute, and debug Python programs
  2. Use variables, data types, and operators effectively
  3. Work with Python’s built-in data structures (lists, tuples, dictionaries, sets)
  4. Implement control flow using conditional statements and loops
  5. Create and use functions to write modular, reusable code
  6. Handle files and perform basic I/O operations
  7. Implement error handling in Python programs
  8. Use external libraries and modules
  9. Apply programming concepts to solve mathematical problems

Course Structure

The course is organized into four comprehensive modules:

Module 1: Python Fundamentals (6 lessons)

Core concepts of Python programming:

  • Variables & Data Types
  • Control Flow (if/elif/else)
  • Loops (for/while)
  • Functions
  • Recursion
  • Scope

Practice: Review session consolidating fundamental concepts

Module 2: Data Structures (5 lessons + 4 assignments)

Python’s built-in data structures:

  • Lists & Tuples
  • Sets
  • Dictionaries
  • Iterables & Iteration
  • Mutability

Assignments: Recommendation System, Traveling Salesman, Parrondo’s Paradox, Sudoku Solver
Practice: Review sessions and additional exercises

Module 3: NumPy (8 lessons + 3 applications)

Numerical computing with NumPy:

  • Introduction to NumPy Arrays
  • Array Arithmetics
  • Loading & Saving Data
  • Array Manipulation
  • Masking & Boolean Indexing
  • Random Numbers & Fancy Indexing
  • Statistics
  • Linear Algebra
  • Vectorization

Applications: Linear Algebra Problems, MNIST Digit Recognition, Snell’s Law Simulation
Practice: Quizzes and review sessions

Module 4: IDEs & Tools (2 sessions + 1 application)

Professional development environment:

  • General Review
  • IDEs (Jupyter, VS Code)
  • Debugging Techniques
  • Best Practices

Application: RSA Encryption
Practice: General review and integration project

Assessment Methods

Grading Components
  • Exercises and Practice Problems: 40%
  • Module Projects: 30%
  • Final Project: 20%
  • Participation and Engagement: 10%

Required Materials

Software

  • Python 3.8 or higher (latest version recommended)
  • Code Editor: VS Code, PyCharm, Jupyter Notebook, or any text editor
  • Internet access for downloading packages and accessing course materials

Course Policies

Attendance and Participation

Regular engagement with course materials is essential for success. Students are expected to: - Complete lessons in order - Attempt exercises before reviewing solutions - Participate in discussions and ask questions

Academic Integrity

All work submitted must be your own. You may: - Discuss concepts with other students - Use online resources for learning - Reference documentation and tutorials

You may not: - Copy code directly from other students - Submit work that is not your own - Use AI tools to complete assignments without understanding the solution

Late Work

It’s recommended to follow the course schedule, but you may work at your own pace if needed.

Support and Resources

Getting Help

  • Review lesson materials and examples
  • Check documentation and official Python resources
  • Use the course repository’s issue tracker
  • Reach out to instructors during office hours

Technical Support

For technical issues with the course website or materials: - Check the GitHub repository - Submit an issue on GitHub - Contact the course administrator

Schedule

Pacing

This is a self-paced course. The suggested timeline is: - Weeks 1-2: Module 1 - Weeks 3-4: Module 2 - Weeks 5-6: Module 3 - Weeks 7-8: Module 4

Adjust the pace based on your learning needs and schedule.

Contact Information

For questions about course content, assignments, or policies, please: - Submit an issue on the GitHub repository - Contact your instructor via the designated communication channels


Last updated: 2024