[major=SE | course_id=PRF192 | syllabus_id=12223 | semester=1 | combo=core | title=Programming Fundamentals]
Course ID: PRF192
Title EN: Programming Fundamentals
Title VI: Cơ sở lập trình
Credits: 3.0
Prerequisites: 
Description: Understand basics computer system and methods of software development, focus on function-oriented programming design, coding, testing and discipline in programming.
Explain basic concepts of programming, function-oriented programming design, modularity, understand and coding programs using C language.

Upon completing the course, student should have:
1. Knowledge: (ABET e)
- Explain the way to solve a real problem using computer.
- Understand the basic concepts computer system, and software development.
- Understand the basic concepts of programming, focus on procedure programming, testing and debugging, unit testing.

2. Skills in programming: (ABET k)
- Read and understand the simple C programs;
- Solve real problems using C.

3. Apply learning methods effectively: (ABET i)
- Academic reading.
- Individual and team work behaviors.
Student tasks: - Students must attend at least 80% of contact sessions in order to be accepted to the final examination.
- Student is responsible to do all assigned exercises given by instructor in class or at home and submit on time.
- Use laptop in class only for learning purpose.
- Promptly access to the https://flm.fpt.edu.vn/ for up-to-date course information.
Tools: Tools:
- Internet
- C language utility (ex.DevC++ 6.3)
Course type: traditional
Decision: 1286/QĐ-ĐHFPT dated 11/22/2024
Approved date: 2024-11-22
CLO1: Understand and describe about a program, and the way it works on computer.
[1] category=Assignment; type=on-going; weight=15.0; duration=at home; question_type=CLO2-CLO9; grading_guide=problem(s) to solve by programming using CLO2 - CLO9; completion_criteria=; clos=>0
[2] category=Practical Exam; type=on-going; weight=30.0; duration=85'; question_type=CLO2-CLO8; grading_guide=problem(s) to solve by programming using CLO2 - CLO8; completion_criteria=; clos=>0
[3] category=Progress test; type=on-going; weight=15.0; duration=20'-40'; question_type=CLO1, CLO5, CLO6, CLO9; grading_guide=PT1: CLO1 - CLO5; PT2: CLO6 - CLO9; Number of questions: 3-8 for each CLOx; completion_criteria=; clos=>0
[4] category=Workshop; type=on-going; weight=10.0; duration=on class room; question_type=CLO1-CLO9; grading_guide=W1: CLO1, CLO2, CLO3; W2: LO4; W3: CLO6, CLO7; W4: CLO7, CLO8; W5: CLO9; completion_criteria=; clos=>0
[5] category=Final exam; type=Final exam; weight=30.0; duration=60'; question_type=CLO1-CLO9; grading_guide=questions distribution:CLO1: 2 - 3; CLO2: 5 - 10; CLO3: 8 - 10; CLO4: 8 - 10; CLO5: 5 - 8; CLO6: 5 - 8; CLO7: 5 - 8; CLO8: 2 - 4. More than 70% new questions (for the current semester);; completion_criteria=; clos=4
[1] desc=Foundations of Programming Using C; author=Evan Weaver; publisher=Creative Commons Attribution-NonCommercial- ShareAlike 3.0 Unported License; edition=; isbn=; main=True; online=; note=
[2] desc=The C Programming Language; author=Brian W. Kernighan, Dennis M. Ritchie; publisher=Pearson; edition=2nd Edition; isbn=978-0131103627; main=; online=; note=
[3] desc=MOOC: Introduction to C Course; author=Chris Szalwinsk; publisher=Chris Szalwinski and Seneca College.; edition=; isbn=; main=; online=True; note=https://intro2c.sdds.ca/
Session 1: Introduction and installing tools
Topic: Offline; Teaching type: CLO1; LO: I
ITU: Textbook
Materials: PRF192_Slides_1
Download: Read Textbook, install tools

Session 2: Basic concepts computer system; steps to develop a software
Topic: Offline; Teaching type: CLO1; LO: T
ITU: Textbook
Materials: PRF192_Slides_2
Download: Read Textbook

Session 3: Structure of a simple C program; C compiler
Topic: Offline; Teaching type: CLO1; LO: T
ITU: Textbook
Materials: PRF192_Slides_3
Download: Practice a simple C program

Session 4: Variable and constant used in the C programming language
Topic: Offline; Teaching type: CLO2; LO: T
ITU: Textbook
Download: Practice declaration variable and constant
CLO2: Demonstrate about variables, expressions and basic operations and illustrate them by program examples.
Session 1: Understand what is a data type
Topic: Offline; Teaching type: CLO2; LO: T
ITU: Textbook
Download: Read Textbook

Session 2: Basic Memory Operations
Implement basic input/output functions using scanf, printf
Topic: Offline; Teaching type: CLO2; LO: T
ITU: Textbook
Download: https://flm.fpt.edu.vn/gui/role/student/Read TextbookPractice basic input/ ouput

Session 3: Expressions: Arithmetic, Relational, Logical, Bit operators, Shorthand Assignment operators
Topic: Offline; Teaching type: CLO2; LO: T
ITU: Textbook
Download: Implement operators

Session 4: Expressions: Mixing Data Types, Casting, Precedence
Topic: Offline; Teaching type: CLO2; LO: T
ITU: Textbook
Download: Practice Mixing data types and Casting
CLO3: Explain the meaning and use of Logic constructs in C Language. Describe about programming styles.
Session 1: Structured Programming: Selection (if-else, switch-case)
Topic: Offline; Teaching type: CLO2; LO: T
ITU: Textbook
Download: Implement if-else, switch-case

Session 2: Structured Programming: Loop (for, while, do-while)
Topic: Offline; Teaching type: CLO3; LO: I
ITU: Textbook
Download: Implement for, while, do-while

Session 3: Review: The lecturer reviews the learned content
Topic: Offline; Teaching type: CLO1, CLO2, CLO3; LO: T
ITU: Textbook
Download: Answer the Instructor's questions and practice the requirements

Session 4: Review (contd): The lecturer reviews the learned content
Topic: Offline; Teaching type: CLO1, CLO2, CLO3; LO: T
ITU: Textbook
Download: Answer the Instructor's questions and practice the requirements
CLO4: Describe about Modularity and Functions in C programs and their use.
Session 1: Workshop 1: Practice declaring and initializing values for variables.
Topic: Offline; Teaching type: CLO1, CLO2, CLO3; LO: U
ITU: Completed Workshop
Download: Complete Workshop 1

Session 2: Workshop 1: Use expressions to perform simple calculations.
Topic: Offline; Teaching type: CLO1, CLO2, CLO3; LO: U
ITU: Completed Workshop
Download: Complete Workshop 1

Session 3: Workshop 1: Practice techniques to control program structure using conditional and loop structures
Topic: Offline; Teaching type: CLO1, CLO2, CLO3; LO: U
ITU: Completed Workshop
Download: Complete Workshop 1

Session 4: Modules: What is a module? How to design modules for a program?
Topic: Offline; Teaching type: CLO4; LO: I
ITU: Textbook
Download: Read Textbook
CLO5: Understanding and using pointers in programs.
Session 1: Modules: Characteristics of modules
Topic: Offline; Teaching type: CLO4; LO: I
ITU: Textbook
Download: Read Textbook

Session 2: Modules: Principles of defining modules
Topic: Offline; Teaching type: CLO4; LO: I
ITU: Textbook
Download: Read Textbook

Session 3: Functions: Function definitions
Topic: Offline; Teaching type: CLO4; LO: T
ITU: Textbook
Download: Practice function definitions

Session 4: Functions: Use a function. Parameters: Pass by value
Topic: Offline; Teaching type: CLO4; LO: T
ITU: Textbook
Download: Practice use a function
CLO6: Discuss about C Libraries and their use.
Session 1: Functions: Differentiate Built-in and User-defined functions
Topic: Offline; Teaching type: CLO4; LO: T
ITU: Textbook
Download: Read Textbook

Session 2: Functions: Extent and Scope of a Variable
Topic: Offline; Teaching type: CLO4; LO: T
ITU: Textbook
Download: Implement scope of variable

Session 3: Review: The lecturer reviews the learned content
Topic: Offline; Teaching type: CLO4; LO: T
ITU: Textbook
Download: Answer the Instructor's questions and practice the requirements

Session 4: Review (cont): The lecturer reviews the learned content
Topic: Offline; Teaching type: CLO4; LO: T
ITU: Textbook
Download: Answer the Instructor's questions and practice the requirements
CLO7: Discuss about Arrays, Struct and their use in C programs.
Session 1: Workshop 2: Real-world problem analysis techniques for program modularization
Topic: Offline; Teaching type: CLO4; LO: U
ITU: Textbook
Download: Complete Workshop 2

Session 2: Workshop 2:Practice defining and using functions
Topic: Offline; Teaching type: CLO4; LO: U
ITU: Textbook
Download: Complete Workshop 2

Session 3: Workshop 2: Build a program in menu form to call functions
Topic: Offline; Teaching type: CLO4; LO: U
ITU: Textbook
Download: Complete Workshop 2

Session 4: Introduction to Pointers. Where are pointers used?
Topic: Offline; Teaching type: CLO5; LO: I
ITU: Textbook
Download: Read Textbook
CLO8: Discuss about Strings and their use in C programs.
Session 1: Pointer Declarations; Pointer operators
Topic: Offline; Teaching type: CLO5; LO: T
ITU: Textbook
Download: Practice pointer declarations and Implement pointer operators

Session 2: Pointers as parameters of a function. Pass by reference
Topic: Offline; Teaching type: CLO5; LO: T
ITU: Textbook
Download: Practice pass by reference to parameters of a function

Session 3: Pointers: Dynamic Allocated Data
Topic: Offline; Teaching type: CLO5; LO: T
ITU: Textbook
Download: Practice dynamic allocated data

Session 4: Libraries: Standard - stdlib.h; Time - time.h
Topic: Offline; Teaching type: CLO6; LO: I
ITU: Textbook
Download: Read Textbook
CLO9: Discuss about Files and their use in C programs.
Session 1: Libraries (cond): Math - math.h; Character - ctype.h
Topic: Offline; Teaching type: CLO6; LO: T
ITU: Textbook
Download: Read Textbook

Session 2: Input/ Formatted Output
Topic: Offline; Teaching type: CLO6; LO: T
ITU: Textbook
Download: Implement input and formatted output

Session 3: Review: The lecturer reviews the learned content
Topic: Offline; Teaching type: CLO5, CLO6; LO: T
ITU: Textbook
Download: Answer the Instructor's questions and practice the requirements

Session 4: Progress Test 1: Evaluate students on the theoretical knowledge they have learned
Topic: Offline; Teaching type: CLO1, CLO2, CLO3, CLO4, CLO5, CLO6; LO: U
ITU: Study Materials
Download: Complete Progress Test 1
Session 1: Arrays: Conceps One-Dimensional array and Basic Operations on Array
Topic: Offline; Teaching type: CLO7; LO: T
ITU: Textbook
Download: https://flm.fpt.edu.vn/gui/role/student/Practice one-demensional array declarations and basic operations on array: input/ output

Session 2: Matrix: Two-Dimensional Arrays; Inputting, Outputting Data for Matrix and other operations
Topic: Offline; Teaching type: CLO7; LO: T
ITU: Textbook
Download: https://flm.fpt.edu.vn/gui/role/student/Practice two-demensional array declarations, input/output, operations

Session 3: Arrays: Solve Problems using Arrays (Linear Search and Selection Sort)
Topic: Offline; Teaching type: CLO7; LO: T
ITU: Textbook
Download: Practice: Search, Sort

Session 4: Struct: Using struct to organize complex data
Topic: Offline; Teaching type: CLO7; LO: T
ITU: Textbook
Download: Practice declaration, use Struct
Session 1: Review: The lecturer reviews the learned content
Topic: Offline; Teaching type: CLO7; LO: T
ITU: Textbook
Download: Answer the Instructor's questions and practice the requirements

Session 2: Review: Array or structs
Topic: Offline; Teaching type: CLO7; LO: T
ITU: Textbook
Download: Practice case study

Session 3: Workshop 3: Practice basic input/ output and operations of array
Topic: Offline; Teaching type: CLO7; LO: U
ITU: Completed Workshop
Download: Complete Workshop 3

Session 4: Workshop 3: Practice with character arrays using library functions in ctype.h
Topic: Offline; Teaching type: CLO6, CLO7; LO: U
ITU: Completed Workshop
Download: Complete Workshop 3
Session 1: Workshop 3: Manage data with an array of struct
Topic: Offline; Teaching type: CLO7; LO: U
ITU: Completed Workshop
Download: Complete Workshop 3

Session 2: String: Declare/Initialize a string
Topic: Offline; Teaching type: CLO8; LO: T
ITU: Textbook
Download: https://flm.fpt.edu.vn/gui/role/student/Practice declare/ initialize String

Session 3: String: Input/ Output a String using buit-in Functions
Topic: Offline; Teaching type: CLO8; LO: T
ITU: Textbook
Download: https://flm.fpt.edu.vn/gui/role/student/Practice input/ output and operations string

Session 4: Array of strings; operations of String (string.h)
Topic: Offline; Teaching type: CLO8; LO: T
ITU: Textbook
Download: Implement Array of string
Session 1: Review: The lecturer reviews the learned content
Topic: Offline; Teaching type: CLO8; LO: T
ITU: Textbook
Download: Answer the Instructor's questions and practice the requirements

Session 2: Review (contd): The lecturer reviews the learned content
Topic: Offline; Teaching type: CLO8; LO: T
ITU: Textbook
Download: Answer the Instructor's questions and practice the requirements

Session 3: Workshop 4: Problem-Solving with String (input/ output/ operations)
Topic: Offline; Teaching type: CLO6, CLO7, CLO8; LO: U
ITU: Completed Workshop
Download: Complete Workshop 4

Session 4: File: Basic concepts File
Topic: Offline; Teaching type: CLO9; LO: I
ITU: Textbook
Download: Read Textbook
Session 1: File: File types (Text File, Binary File)
Topic: Offline; Teaching type: CLO9; LO: T
ITU: Textbook
Download: Read Textbook

Session 2: File: Ways for accessing files
Topic: Offline; Teaching type: CLO9; LO: T
ITU: Textbook
Download: Implement acessing files

Session 3: File: File Functions
Topic: Offline; Teaching type: CLO9; LO: T
ITU: Textbook
Download: Practice file functions

Session 4: Review: The lecturer reviews the learned content
Topic: Offline; Teaching type: CLO9; LO: T
ITU: Textbook
Download: Answer the Instructor's questions and practice the requirements
Session 1: Workshop 5: Open, read, write, and close files using C file handling functions
Topic: Offline; Teaching type: CLO9; LO: U
ITU: Completed Workshop
Download: Complete Workshop 5

Session 2: Progress Test 2
Topic: Offline; Teaching type: CLO7, CLO8, CLO9; LO: U
ITU: Study Materials
Download: Complete Progress Test 2

Session 3: Assigment
Topic: Offline; Teaching type: CLO1 - CLO9; LO: U
ITU: Completed Assignment
Download: Complete Assignment

Session 4: Final Review
Topic: Offline; Teaching type: CLO1 - CLO9; LO: U
ITU: Study Materials
Download: Continue exam preparation