48430 Fundamentals of C Programming
Warning: The information on this page is indicative. The subject outline for a
particular session, location and mode of offering is the authoritative source
of all information about the subject for that offering. Required texts, recommended texts and references in particular are likely to change. Students will be provided with a subject outline once they enrol in the subject.
Subject handbook information prior to 2025 is available in the Archives.
Credit points: 6 cp
Subject level:
Undergraduate
Result type: Grade and marksDescription
Data engineers use C programming language to collect, process and store data. This is an introductory subject to high-level procedural programming using C programming language. Students learn basic programming concepts such as conditional statements, iteration, functions, arrays, file processing, data structures and memory management using pointers. The subject also introduces how to compile C source code using the GNU toolchain, link binary object files and run executable files. As a data engineer would, students go through the complete development cycle, incorporating analysis of complex problems, programming solution design, implementation in C, debugging and testing.
Subject learning objectives (SLOs)
Upon successful completion of this subject students should be able to:
1. | Design, develop and test programs in C programming language to solve problems related to collecting, processing and storing data. (C.1) |
---|---|
2. | Identify and explain the use and workings of programming tools (such as compilers, linkers and debuggers), standard libraries and operating system functions to support program execution. (D.1) |
3. | Demonstrate the understanding and the ability to follow professional programming practices to align with industry expectations. (D.1) |
4. | Communicate effectively and collaborate as a team member to solve complex problems using C programming language. (E.1) |
Course intended learning outcomes (CILOs)
This subject also contributes specifically to the development of the following Course Intended Learning Outcomes (CILOs):
- Design Oriented: FEIT graduates apply problem solving, design and decision-making methodologies to develop components, systems and processes to meet specified requirements. (C.1)
- Technically Proficient: FEIT graduates apply abstraction, mathematics and discipline fundamentals, software, tools and techniques to evaluate, implement and operate systems. (D.1)
- Collaborative and Communicative: FEIT graduates work as an effective member or leader of diverse teams, communicating effectively and operating within cross-disciplinary and cross-cultural contexts in the workplace. (E.1)
Contribution to the development of graduate attributes
Engineers Australia Stage 1 Competencies
This subject contributes to the development of the following Engineers Australia Stage 1 Competencies:
- 1.2. Conceptual understanding of the mathematics, numerical analysis, statistics, and computer and information sciences which underpin the engineering discipline.
- 2.1. Application of established engineering methods to complex engineering problem solving.
- 2.2. Fluent application of engineering techniques, tools and resources.
- 3.2. Effective oral and written communication in professional and lay domains.
- 3.6. Effective team membership and team leadership.
Teaching and learning strategies
The subject will be delivered as weekly forums and laboratories. Prior to each forum/laboratory session students must answer preparation questions and write small snippets of code by reading online notes and watching short videos. In the forums students will critique this learning material, and simple programs will be developed interactively to illustrate fundamental programming concepts.
In the laboratory sessions students actively develop C programs to solve problems on data collection, processing and storage using the knowledge gathered from learning materials and forums. Students collaborate with group members to break down a substantial task to multiple subtasks, and develop C programs that interface with each other.
Feedback is provided regularly throughout the session. Weekly verbal feedback during forums and laboratory classes inform the students to enable increased progress throughout the session, and enable feedforward opportunities to inform the progress of the components of the assessment tasks.
Content (topics)
Topics include:
- Fundamental programming concepts – program development cycle, GNU toolchain for compiling C source code, linking binary object files, debugging, testing, and modular programming.
- Procedural programming in C – primitive data types in C, operators, typecasting, functions, and pass by reference/value.
- Control and loop statements – logical expressions, conditional statement structure, and iterative statement structure.
- Arrays – creating and manipulating arrays, and string handling.
- Structures and file processing – creating and manipulating user defined data structure types, and binary and text file handling.
- Pointers – dynamic memory management using pointers and linked lists.
- Advanced programming topics – user defined libraries, programming in the large, and command line parsing.
Assessment
Assessment task 1: Quiz
Intent: | Reinforce and assess the understanding of basic programming concepts and fundamental C programming concepts. |
---|---|
Objective(s): | This assessment task addresses the following subject learning objectives (SLOs): 1 and 2 This assessment task contributes to the development of the following Course Intended Learning Outcomes (CILOs): C.1 and D.1 |
Type: | Quiz/test |
Groupwork: | Individual |
Weight: | 20% |
Assessment task 2: Assignment
Intent: | Assess the understanding of fundamental C programming concepts, and how they can be applied for real-world Data Engineering. |
---|---|
Objective(s): | This assessment task addresses the following subject learning objectives (SLOs): 1, 2 and 3 This assessment task contributes to the development of the following Course Intended Learning Outcomes (CILOs): C.1 and D.1 |
Type: | Laboratory/practical |
Groupwork: | Individual |
Weight: | 20% |
Assessment task 3: Group Project
Intent: | Assess the ability to develop and deliver programming solutions as a group. |
---|---|
Objective(s): | This assessment task addresses the following subject learning objectives (SLOs): 1, 2, 3 and 4 This assessment task contributes to the development of the following Course Intended Learning Outcomes (CILOs): C.1, D.1 and E.1 |
Type: | Project |
Groupwork: | Group, group and individually assessed |
Weight: | 30% |
Length: | Project report should be no more than 10 pages. Any content in excess of the page limit will not be marked. |
Assessment task 4: Final exam
Intent: | Comprehensively evaluate students' understanding of the fundamental programming concepts, the ability to apply them using the C language, and the awareness of professional coding practices. |
---|---|
Objective(s): | This assessment task addresses the following subject learning objectives (SLOs): 1, 2 and 3 This assessment task contributes to the development of the following Course Intended Learning Outcomes (CILOs): C.1 and D.1 |
Type: | Examination |
Groupwork: | Individual |
Weight: | 30% |
Minimum requirements
In order to pass the subject, a student must achieve an overall mark of 50% or more.
Required texts
Hanly JR and Koffman EB, Problem Solving and Program Design in C, Eighth Edition, Pearson Higher Ed 2015.
Other resources
Please refer to Canvas for all administrative announcements. Canvas will be used to disseminate resources relevant to the subject.
You are expected to check Canvas for any news regarding the subject on a daily basis.