Programming Fundamentals with Python (PFP191)
Vietnamese title: Cơ sở lập trình với Python
Credits: 3

Description:
- Knowledge about programming language has become an essential part of an education in computer science because the realization of ideas, approaches, models, and algorithms is extremely important for the field of education and research as well as production. In order to deploy from an idea to a product, programming language tools are required.
- In recent years, python has emerged as a popular, powerful, multitasking and widely applicable 3rd generation language, especially in some new technology fields such as AI, Fintech, Data Science, IoT, and so on.
- This course covers the essential aspects of programming, including fundamental concepts, coding design, and the Python programming language, with an emphasis on object-oriented programming (OOP), given its importance for advanced software development and subsequent courses.

Learning outcomes:
Understand the development environment (IDE), programming concepts and python's world
Understand variables, expression and statement
Understand Conditional Execution, Functions, Loop and Iterations
Understand Strings
Understand Files
Understand List, Dictionaries, Tuples
Understand OOP and how to apply this technology to an actual application

Student tasks:
- Students must attend at least 80% of contact slots in order to be accepted to the final examination.
- Student is responsible to do all exercises given by instructor in class or at home and submit on time
- Constantly follow https://flm.fpt.edu.vn/ for up-to-date course information regarding assignment submission and feedback on assignments and project work.

Tools:
Visual Studio Code, Google Colab

Materials:
description: Python for Everybody Exploring Data Using Python 3
author: Charles R. Severance
publisher: Creative Commons Attribution-NonCommercial- ShareAlike 3.0 Unported License
published_date: 2016
edition: 1st
isbn: 978-1530051120
note: http://do1.dr-chuck.com/pythonlearn/EN_us/pythonlearn.pdf
description: Python for Everybody (PY4E)
author: Charles R. Severance
note: https://www.py4e.com/
description: Python for Everybody Specialization
author: Charles R. Severance
note: https://www.coursera.org/specializations/python
description: Python Programming and Numerical Methods - A Guide for Engineers and Scientists
note: https://pythonnumericalmethods.studentorg.berkeley.edu/notebooks/Index.html

Assessments:
category: Assignment
type: on-going
weight: 15.0
duration: 28 slots
question_type: CLO1, CLO2, CLO3, CLO4, CLO5, CLO6, CLO7
no_question: Review
grading_guide: All subjects in syllabus
note: in class, by teacher
category: Lab
type: on-going
weight: 10.0
duration: 90'/each
question_type: CLO1, CLO2, CLO3, CLO4, CLO5, CLO6, CLO7
no_question: Review
note: in class, by teacher
category: Practical Exam
type: on-going
weight: 30.0
duration: 85'/each
question_type: CLO1, CLO2, CLO3, CLO4, CLO5, CLO6, CLO7
no_question: PEA
note: By exam board
category: Progress Test
type: on-going
weight: 15.0
duration: 30'/each
question_type: CLO1, CLO2, CLO3, CLO4, CLO5, CLO6, CLO7
no_question: Multiple choices
Marked by Computer or a suitable format
knowledge_and_skill: 20/each
grading_guide: Based on the progress on the class
note: in class, by LMS system
category: Final Exam
type: Final exam
weight: 30.0
duration: 60'/each
question_type: CLO1, CLO2, CLO3, CLO4, CLO5, CLO6, CLO7
no_question: Multiple choices
Marked by Computer
knowledge_and_skill: 50
grading_guide: All subjects in syllabus
note: Exam room

Schedule:
session: Chapter 1. Why should you learn to write programs? (Part 1)
1.1 Creativity and Motivation
1.2 Computer hardware architecture
1.3 Understanding programming
learning_outcomes: I
materials: PFP191_Mat
session: 1.4 Words and sentences
1.5 Conversing with Python
1.6 Terminology: Interpreter and compiler
learning_outcomes: I
session: Chapter 1. Why should you learn to write programs? (Part 2)
1.7 Writing a program
1.8 What is a program?
1.9 The buiding blocks of programs
1.10 What could possibly go wrong?
1.11 Debugging
1.12 The learning journey
1.13 Introduce IDE
learning_outcomes: I
session: Chapter 2. Variables, expressions, and statements (Part 1)
2.1 Values and types
2.2 Variables
2.3 Variable names and keywords
2.4 Statements
learning_outcomes: I
T
session: 2.5 Operators and operands
2.6 Expressions
learning_outcomes: I
T
session: Chapter 2. Variables, expressions, and statements (Part 2)
2.7 Order of operations
2.8 Modulus operator
2.9 String operations
learning_outcomes: I
T
session: 2.10 Asking the user for input
2.11 Comments
2.12 Choosing mnemonic variable names
2.13 Debugging
learning_outcomes: I
T
session: Lab1 assistance
learning_outcomes: U
session: Lab1 assistance (cont.)
learning_outcomes: U
session: Chapter 3. Conditional execution
3.1 Boolean expressions
3.2 Logical operators
3.3 Conditional execution
3.4 Alternative execution
learning_outcomes: IT
session: 3.5 Chained conditionals
3.6 Nested conditionals
3.7 Catching exceptions using try and except
3.8 Short-circuit evaluation of logical expressions
3.9 Debugging
learning_outcomes: IT
session: Chapter 4. Iteration
4.1 Updating variables
4.2 The while statement
4.3 Infinite loops
4.4 Finishing iterations with continue
learning_outcomes: IT
session: 4.5 Definite loops using for
4.6 Loop patterns
4.7 Debugging
learning_outcomes: IT
session: Chapter 5. Functions (Part 1)
5.1 Function calls
5.2 Built-in functions
5.3 Type conversion functions
learning_outcomes: I
T
session: 5.4 Math functions
5.5 Random numbers
5.6 Adding new functions
learning_outcomes: I
T
session: Chapter 5. Functions (Part 2)
5.7 Definitions and uses
5.8 Flow of execution
5.9 Parameters and arguments
learning_outcomes: I
T
session: 5.10 Fruitful functions and void functions
5.11 Why functions?
5.12 Debugging
learning_outcomes: I
T
session: Lab 2 assistance
learning_outcomes: U
session: Lab 2 assistance (cont.)
learning_outcomes: U
session: Progress test 1
learning_outcomes: I
U
session: Chapter 6. Strings (Part 1)
6.1 A string is a sequence
6.2 Getting the length of a string using len
6.3 Traversal through a string with a loop
learning_outcomes: I
T
session: 6.4 String slices
6.5 Strings are immutable
6.6 Loop and counting
learning_outcomes: I
T
session: Chapter 6. Strings (Part 2)
6.7 The in operator
6.8 String comparison
6.9 String methods
learning_outcomes: I
T
session: 6.10 Parsing strings
6.11 Format operator
6.12 Debugging
learning_outcomes: I
T
session: Chapter 7. Files
7.1. Persistence
7.2 Opening files
7/3 Text files and lines
7.4 Reading files
learning_outcomes: IT
session: 7.5 Searching through a file
7.6 Letting the user choose the file name
7.7 Using try, except, and open
7.8 Writing files
7.9 Debugging
learning_outcomes: IT
session: Lab 3 assistance
learning_outcomes: U
session: Lab 3 assistance (cont.)
learning_outcomes: U
session: Chapter 8. Lists (Part 1)
8.1 A list is a sequence
8.2 Lists are mutable
8.3 Traversing a list
learning_outcomes: I
T
session: 8.4 List operations
8.5 List slices
8.6 List methods
learning_outcomes: I
T
session: Chapter 8. Lists (Part 2)
8.7 Deleting elements
8.8 Lists and functions
8.9 Lists and strings
8.10 Parsing lines
learning_outcomes: IT
session: 8.11 Objects and values
8.12 Aliasing
8.13 List arguments
8.14 Debugging
learning_outcomes: IT
session: Chapter 9. Dictionaries
9.1 Dictionary as a set of counters
9.2 Dictionaries and files
9.3 Looping and dictionaries
learning_outcomes: IT
session: 9.4 Advanced text parsing
9.5 Debugging
learning_outcomes: IT
session: Chapter 10. Tuples (Part 1)
10.1 Tuples are immutable
learning_outcomes: I
T
session: 10.2 Comparing tuples
learning_outcomes: I
T
session: 10.3 Tuple assignment
learning_outcomes: I
T
session: 10.4 Dictionaries and tuples
learning_outcomes: I
T
session: Lab 4 assistance
learning_outcomes: U
session: Lab 4 assistance (cont.)
learning_outcomes: U
session: Chapter 14. Object-oriented programming
14.1 Introduction to OOP
learning_outcomes: I
T
session: 14.2 Classes and Objects
learning_outcomes: I
T
session: 14.3 Encapsulation and Data Hiding
learning_outcomes: I
T
session: 14.4 Abstraction and Modular Design
learning_outcomes: I
T
session: 14.5 Inheritance
learning_outcomes: I
T
session: 14.6 Polymorphism and Method Overloading
learning_outcomes: I
T
session: Assignment assistance
learning_outcomes: U
session: Assignment assistance (cont.)
learning_outcomes: U
session: 14.7 Using Objects and Work with OOP Programs
learning_outcomes: I
T
session: 14.8 Object Lifecycle
learning_outcomes: I
T
session: Progress test 2
learning_outcomes: U
session: 14.9 Advanced OOP Concepts and Design Patterns
learning_outcomes: I
T
session: 14.10 Case Studies
learning_outcomes: I
T
session: 14.11 Summary
learning_outcomes: I
T
session: Lab 5 assistance
learning_outcomes: I
T
session: Lab 5 assistance (cont.)
learning_outcomes: I
T
session: Assignment review
learning_outcomes: U
session: Assignment review (cont.)
learning_outcomes: U
session: Review
session: Review