Programming Fundamentals (PRF192)
Vietnamese title: Cơ sở lập trình
Credits: 3

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.

Learning outcomes:
Understand and describe about a program, and the way it works on computer.
Demonstrate about variables, expressions and basic operations and illustrate them by program examples.
Explain the meaning and use of Logic constructs in C Language. Describe about programming styles.
Describe about Modularity and Functions in C programs and their use.
Understanding and using pointers in programs.
Discuss about C Libraries and their use.
Discuss about Arrays, Struct and their use in C programs.
Discuss about Strings and their use in C programs.
Discuss about Files and their use in C programs.

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)

Materials:
description: Foundations of Programming Using C
author: Evan Weaver
publisher: Creative Commons Attribution-NonCommercial- ShareAlike 3.0 Unported License
published_date: 2003
description: The C Programming Language
author: Brian W. Kernighan, Dennis M. Ritchie
publisher: Pearson
published_date: 1988
edition: 2nd Edition
isbn: 978-0131103627
description: MOOC: Introduction to C Course
author: Chris Szalwinsk
publisher: Chris Szalwinski and Seneca College.
note: https://intro2c.sdds.ca/

Assessments:
category: Assignment
type: on-going
weight: 15.0
duration: at home
question_type: CLO2-CLO9
no_question: Option 1: a problem similar to real one; Option 2: Follow lecturer's proposal
knowledge_and_skill: Option 1: N/A; Option 2: Follow lecturer's proposal
grading_guide: problem(s) to solve by programming using CLO2 - CLO9
note: Individual or team work, guided by instructor, submission by a given deadline
category: Practical Exam
type: on-going
weight: 30.0
duration: 85'
question_type: CLO2-CLO8
no_question: Preferable to be marked by scripts
knowledge_and_skill: 1-2 problems
grading_guide: problem(s) to solve by programming using CLO2 - CLO8
note: supervised by proctor(s) sent by exam board
category: Progress test
type: on-going
weight: 15.0
duration: 20'-40'
question_type: CLO1, CLO5, CLO6, CLO9
no_question: Option 1: essay or multiple choice; Option 2: Follow lecturer's proposa
knowledge_and_skill: Option 1: 15-30 if multiple choice; Option 2: Follow lecturer's proposal
grading_guide: PT1: CLO1 - CLO5; PT2: CLO6 - CLO9; Number of questions: 3-8 for each CLOx
note: supervised by instructor
category: Workshop
type: on-going
weight: 10.0
duration: on class room
question_type: CLO1-CLO9
no_question: Option 1: practical exercises; Option 2: Follow lecturer's proposal
knowledge_and_skill: Option 1: N/A; Option 2: Follow lecturer's proposal
grading_guide: W1: CLO1, CLO2, CLO3; W2: LO4; W3: CLO6, CLO7; W4: CLO7, CLO8; W5: CLO9
note: Teachers support tutorials and students do them by themselves
category: Final exam
type: Final exam
weight: 30.0
duration: 60'
question_type: CLO1-CLO9
no_question: multiple choice
knowledge_and_skill: 50
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);
note: supervised by proctor(s) sent by exam board

Schedule:
session: Introduction and installing tools
learning_outcomes: I
materials: PRF192_Slides_1
session: Basic concepts computer system; steps to develop a software
learning_outcomes: T
materials: PRF192_Slides_2
session: Structure of a simple C program; C compiler
learning_outcomes: T
materials: PRF192_Slides_3
session: Variable and constant used in the C programming language
learning_outcomes: T
session: Understand what is a data type
learning_outcomes: T
session: Basic Memory Operations
Implement basic input/output functions using scanf, printf
learning_outcomes: T
session: Expressions: Arithmetic, Relational, Logical, Bit operators, Shorthand Assignment operators
learning_outcomes: T
session: Expressions: Mixing Data Types, Casting, Precedence
learning_outcomes: T
session: Structured Programming: Selection (if-else, switch-case)
learning_outcomes: T
session: Structured Programming: Loop (for, while, do-while)
learning_outcomes: I
session: Review: The lecturer reviews the learned content
learning_outcomes: T
session: Review (contd): The lecturer reviews the learned content
learning_outcomes: T
session: Workshop 1: Practice declaring and initializing values for variables.
learning_outcomes: U
session: Workshop 1: Use expressions to perform simple calculations.
learning_outcomes: U
session: Workshop 1: Practice techniques to control program structure using conditional and loop structures
learning_outcomes: U
session: Modules: What is a module? How to design modules for a program?
learning_outcomes: I
session: Modules: Characteristics of modules
learning_outcomes: I
session: Modules: Principles of defining modules
learning_outcomes: I
session: Functions: Function definitions
learning_outcomes: T
session: Functions: Use a function. Parameters: Pass by value
learning_outcomes: T
session: Functions: Differentiate Built-in and User-defined functions
learning_outcomes: T
session: Functions: Extent and Scope of a Variable
learning_outcomes: T
session: Review: The lecturer reviews the learned content
learning_outcomes: T
session: Review (cont): The lecturer reviews the learned content
learning_outcomes: T
session: Workshop 2: Real-world problem analysis techniques for program modularization
learning_outcomes: U
session: Workshop 2:Practice defining and using functions
learning_outcomes: U
session: Workshop 2: Build a program in menu form to call functions
learning_outcomes: U
session: Introduction to Pointers. Where are pointers used?
learning_outcomes: I
session: Pointer Declarations; Pointer operators
learning_outcomes: T
session: Pointers as parameters of a function. Pass by reference
learning_outcomes: T
session: Pointers: Dynamic Allocated Data
learning_outcomes: T
session: Libraries: Standard - stdlib.h; Time - time.h
learning_outcomes: I
session: Libraries (cond): Math - math.h; Character - ctype.h
learning_outcomes: T
session: Input/ Formatted Output
learning_outcomes: T
session: Review: The lecturer reviews the learned content
learning_outcomes: T
session: Progress Test 1: Evaluate students on the theoretical knowledge they have learned
learning_outcomes: U
session: Arrays: Conceps One-Dimensional array and Basic Operations on Array
learning_outcomes: T
session: Matrix: Two-Dimensional Arrays; Inputting, Outputting Data for Matrix and other operations
learning_outcomes: T
session: Arrays: Solve Problems using Arrays (Linear Search and Selection Sort)
learning_outcomes: T
session: Struct: Using struct to organize complex data
learning_outcomes: T
session: Review: The lecturer reviews the learned content
learning_outcomes: T
session: Review: Array or structs
learning_outcomes: T
session: Workshop 3: Practice basic input/ output and operations of array
learning_outcomes: U
session: Workshop 3: Practice with character arrays using library functions in ctype.h
learning_outcomes: U
session: Workshop 3: Manage data with an array of struct
learning_outcomes: U
session: String: Declare/Initialize a string
learning_outcomes: T
session: String: Input/ Output a String using buit-in Functions
learning_outcomes: T
session: Array of strings; operations of String (string.h)
learning_outcomes: T
session: Review: The lecturer reviews the learned content
learning_outcomes: T
session: Review (contd): The lecturer reviews the learned content
learning_outcomes: T
session: Workshop 4: Problem-Solving with String (input/ output/ operations)
learning_outcomes: U
session: File: Basic concepts File
learning_outcomes: I
session: File: File types (Text File, Binary File)
learning_outcomes: T
session: File: Ways for accessing files
learning_outcomes: T
session: File: File Functions
learning_outcomes: T
session: Review: The lecturer reviews the learned content
learning_outcomes: T
session: Workshop 5: Open, read, write, and close files using C file handling functions
learning_outcomes: U
session: Progress Test 2
learning_outcomes: U
session: Assigment
learning_outcomes: U
session: Final Review
learning_outcomes: U