Version | 1.2 |

Unit Name | Engineering Programming |

Unit Code | BSC107 |

Unit Duration | 1 Semester |

Award |
Bachelor of Science (Engineering) Duration 3 years |

Year Level | Two |

Unit Creator / Reviewer | Dr. Duy Ngo |

Core/Elective: | Core |

Pre/Co-requisites | None |

Credit Points | 3 |

Mode of Delivery | Online or on-campus. |

Unit Workload | (Total student workload including “contact hours” = 10 hours per week) Pre-recordings / Lecture – 1.5 hours Tutorial – 1.5 hours Guided labs / Group work / Assessments – 2 hours Personal Study recommended – 5 hours |

## Unit Description and General Aims

The objective in presenting this unit is to provide students with basic engineering programming concepts, algorithms, and programming techniques necessary to support subsequent studies in engineering. This unit enables the student to acquire the software literacy essential to working creatively in an engineering environment. On completion of the unit, the student would have learned how to utilise structured programming to translate and implement problems in C programming language and use computer programming to solve problems in engineering contexts.

The primary topics in this course include, but are not limited to: computer representation of various data types; the computer instruction set; basic C syntax; logic operators; flow control; functions; arrays; pointers; simple I/O; basic microprocessor instructions; relationships between assembly language and C; compilation; linkage; and loading of programs. The unit also equips the student with the necessary skills to formulate solutions to common engineering problems using MATLAB, Excel and Python programming.

## Learning Outcomes

On successful completion of this Unit, students are expected to be able to:

- Write and interpret moderately complex C programs

Bloom's Level 6 - Structure programs

Bloom's Level 6 - Incorporate basic file processing techniques into programs

Bloom's Level 3 - Conceptualize engineering problems to computational problems

Bloom's Level 4 - Solve real-world problems by formulating solutions, and developing and troubleshooting C programs to implement
solutions

Bloom's Level 6 - Demonstrate proficiency in MATLAB, Excel and Python programming

Bloom's Level 3

## Student Assessment

Assessment Type | When assessed | Weighting (% of total unit marks) | Learning Outcomes Assessed |

Type: Weekly quizzes Topics: Topics 2 to 11 |
Weekly | 10% | All |

Type: Multi-choice test / Group work / Short answer questions / Practical Example Topic: Topics 1 to 4 Students may complete a quiz with MCQ type answers or solve some simple problems or use software to complete a practical. |
After Topic 4 | 20% | 1, 2 |

Type: Project Example Topic: Topics 5 to 8 Comprehensive programming task using C programming to create functional software. |
After Topic 8 | 25% | All |

Type: Exam and may include Example Topic: C, MATLAB, Excel and Python Students may be required to complete an exam of various types of questions within a timeframe in an invigilated environment. |
Final Week | 40% | All |

Example: Presentation, discussion, group work, exercises, self-assessment/reflection, case study analysis, application. |
Continuous | 5% | - |

**Overall requirements**: Students must achieve a result of 50% or above in the exam itself to pass the exam and must pass the exam to be able to pass the unit. An overall final unit score of 50% or above must be achieved to pass the unit once all assessment, including the exam, has been completed.

## Prescribed and Recommended Readings

#### Prescribed Readings

- Suggested Textbook
- J. R. Hanly, E. B. Koffman,
*Problem Solving and Program Design in C*, 8th Edition, 2015. ISBN: 978-1292098821. - J. Whitington,
*Python from the Very Beginning*, 2020. ISBN: 9780957671157

- J. R. Hanly, E. B. Koffman,

#### Reference Materials

- The Python Tutorial, https://docs.python.org/3/tutorial/
- S. T. Karris,
*Numerical Analysis using MATLAB and Excel*, Orchard Publications, I2007. SBN-13: 978-1934404041 - Deitel, H, Deitel, P 2012:
*C: How to Program*, 7th edn, Pearson Education, ISBN-13: 978-0132990448 - Chapman, SJ 2008,
*MATLAB Programming for Engineers*, 4th edn, Thomson, ISBN-13: 978-0-495-24449-3 - Downey, A 2009,
*Physical Modeling in MATLAB*, Open Textbook Library - Peer-reviewed journals
- Knovel library: http://app.knovel.com
- IDC Technologies publications
- Other material and online collections as advised during the lectures

#### Journal, Website

Several peer-reviewed journals and websites (advised during lectures)

*Science of Computer Programming*

http://www.journals.elsevier.com/science-of-computer-programming/

## Unit Content

#### Topic 1

*Overview of Engineering Programming*

- Computers: Hardware and Software
- Computer Organization (CU, ALU, registers, memory and clock/execution)
- Personal, Distributed and Client/Server Computing
- Machine Languages, Assembly Languages and High-Level Languages
- Some common terms and definitions (software as a service, infrastructure as a service, cloud computing, AWS, relational database, data warehouse, machine learning, internet of things (IOT), Big data, etc.)
- The Software Development Method
- Specifying the problem requirements.
- Analyzing the problem.
- Designing the algorithm to solve the problem.
- Implementing the algorithm.
- Testing and verifying the completed program.
- Maintaining and updating the program.

- Professional Ethics for Computer Programmers

#### Topic 2

*Overview of C Language*

- C Language Elements
- Variable Declarations and Data Types
- Executable Statements
- General Form of a C Program
- Arithmetic Expressions
- Formatting Numbers in Program Output
- Interactive Mode, Batch Mode, and Data Files

#### Topic 3

*Top-Down Design with Functions*

- Building Programs from Existing Information
- Library Functions
- Math Library Functions
- Function Definitions
- Function prototypes
- Function call stack and activation records
- Headers
- Random number generation

- Top-Down Design and Structure Charts
- Functions without Arguments
- Functions with Input Arguments

#### Topic 4

*Selection Structures: if and switch Statements*

- Control structures: sequence, selection, and repetition
- Conditions
- Relational and Equality Operators
- Logical Operators
- Operator Precedence
- Writing Conditions in C
- Comparing Characters
- Logical Assignment
- Complementing a Condition

- The if Statement
- If Statements with Compound Statements
- Decision Steps in Algorithms
- Nested if Statements and Multiple-Alternative Decisions
- The switch Statement

#### Topic 5

*Repetition, Loop Statements and Recursion*

- Repetition in Programs
- Counting Loops and the while Statement
- Computing a Sum or a Product in a Loop
- The for Statement
- Conditional Loops
- Loop Design
- Nested Loops
- The do-while Statement and Flag-Controlled Loops
- Iterative Approximations
- Recursion
- The Nature of Recursion
- Tracing a Recursive Function
- Recursive Mathematical Functions
- Example Using Recursion: Fibonacci Series

#### Topic 6

*Arrays*

- Declaring and Referencing Arrays
- Array Subscripts
- Using for Loops for Sequential Access
- Using Array Elements as Function Arguments
- Array Arguments
- Searching and Sorting an Array
- Parallel Arrays and Enumerated Types
- Multidimensional Arrays
- Graphics Programs with Arrays

#### Topic 7

*Pointer, Modular Programming, Debugging and Testing, Dynamic Data Structures*

- Pointers and the Indirection Operator
- Functions with Output Parameters
- Multiple Calls to a Function with Input/Output Parameters
- Scope of Names
- Formal Output Parameters as Actual Arguments
- Debugging and Testing a Program System
- Dynamic Data Structures
- Pointers to structures
- Dynamic Memory Allocation

#### Topic 8

*Strings*

- String Basics
- String Library Functions: Assignment and Substrings
- Longer Strings: Concatenation and Whole-Line Input
- String Comparison
- Arrays of Pointers
- Character Operations
- String-to-Number and Number-to-String Conversions

#### Topic 9

*User defined Structures, Files and Libraries, storage classes and compilation*

- User-Defined Structure Types
- Structure Type Data as Input and Output Parameters
- Functions Whose Result Values Are Structured
- Input/Output Files
- Binary Files
- Procedural Abstraction
- Data Abstraction
- Personal Libraries: header files, implementation files
- Storage classes
- Conditional compilation
- Arguments to Function main

#### Topic 10

*Introduction to MATLAB*

- The MATLAB Environment
- The MATLAB Desktop
- The Edit/Debug Window
- Docking and Undocking Window
- The MATLAB Workspace
- The Workspace Browser
- Variables and Arrays
- Initializing Variables in MATLAB
- Vectors, Matrices and Arrays
- Multidimensional Arrays
- Subarrays
- Displaying Output Data
- Data Files
- Hierarchy of Operations
- Built-in MATLAB Functions
- Common MATLAB Functions
- Introduction to Plotting

#### Topic 11

*Numerical Analysis using MATLAB and Excel*

- Roots of Polynomials
- Polynomial Construction from Known Roots
- Evaluation of a Polynomial at Specified Values
- Rational Polynomials
- Root Approximation
- Matrices and Determinants
- Functions and cell operations in Excel
- Mathematical problem solving and plotting using Excel
- Numerical integration and differentiation using excel
- Macros

#### Topic 12

*Introduction to Python*

- Introduction to Python
- Using the Python Interpreter
- Control Flow Tools in Python
- Data Structures
- Modules
- Input and Output
- Classes
- Using Python Standard Library
- Unit Review

## Software/Hardware Used

#### Software

**Software:**MATLAB**Version:**2018a+**Instructions:**Refer the help section in the software**Additional resources or files:**N/A

**Software:**MS Excel**Version:**2010+

**Software:**Python 3.10**Instructions:**https://www.python.org/doc/

**Software:**CodeBlocks C/C++ IDE**Version:**http://www.codeblocks.org/**Instructions:**http://www.codeblocks.org/**Additional resources or files:**N/A

**Software:**Repl.it (Cloud IDE)**Version:**https://repl.it/**Instructions:**https://repl.it/**Additional resources or files:**N/A

#### Hardware

- N/A