University of Technology Sydney

41039 Programming 1

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 2024 is available in the Archives.

UTS: Information Technology: Computer Science
Credit points: 6 cp

Subject level:

Undergraduate

Result type: Grade and marks

Anti-requisite(s): 48023 Programming Fundamentals

Description

Programming computers is an essential skill for computer scientists, software engineers, software developers and data scientists, and successful programmers integrate many diverse capabilities to be able to solve complex, abstract problems. This subject introduces the core programming concepts using an object-oriented approach to programming, prioritising project-based learning and independent research, experimentation, and communication skills. Additionally, most programming in industry occurs as alterations to a portion of a large existing codebase, and this subject introduces students to how their initial programming explorations may eventually expand to making fixes or improvements to complex industry-scale projects.

Subject learning objectives (SLOs)

Upon successful completion of this subject students should be able to:

1. Apply basic programming concepts of state, iteration, and decision. (D.1)
2. Solve computational problems by using abstract modelling and conceptualisation. (D.1)
3. Design and create simple functioning programs to achieve objectives. (C.1)
4. Interpret, describe, and document programs using clear communication. (E.1)
5. Reflect on programming decisions and formulate alternatives. (C.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.1. Comprehensive, theory based understanding of the underpinning natural and physical sciences and the engineering fundamentals applicable to the engineering discipline.
  • 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.
  • 2.3. Application of systematic engineering synthesis and design processes.
  • 3.2. Effective oral and written communication in professional and lay domains.

Teaching and learning strategies

This subject will employ several parallel learning structures to allow students to find a mixture of learning experiences that suits their particular needs.

The flipped lecture format allows the students to engage with the learning material in an asynchronous, self-paced, location-independent manner. It also supports a modular approach to delivering core content, permitting students to revise, engage and re-engage as suits their needs. Included in the learning material are staged practice exercises to help the students develop their knowledge and skills in a consequence- and stress-free environment.

In the workshops, this learning will be reinforced with scaffolded exercises that weave the core material together and provide a practical experience of the subject matter. These exercises are then capped with a low-stakes assessment task to help the students gauge their progress and understanding of the material.

Tying these two structural components together is the weekly drop-in sessions, that offer students a face-to-face expert contact point tailored to their current progress, addressing the exact difficulties they are facing at the time.

The learning material also builds towards the larger, ongoing project, which ties the content together into a functioning whole.

Content (topics)

1. Simplest Working Program, and Simple Output
2. Data Types and Variables
3. Decisions and Branching Program Flow
4. Arrays and User Input
5. Loops and Iterative Program Flow
6. Classes and Constructors
7. Methods, Properties and Access Control
8. Lists and Polymorphism
9. File Input and Output
10. Object Oriented Programming Techniques and Structures
11. Inheritance and Interfaces
12. Review and Preview of Programming 2

Assessment

Assessment task 1: Lab Assessments

Intent:

This task provides a mixture of formative and summative assessment to allow students to gauge their progress towards the subject objectives in a low-stakes, controlled environment.

Objective(s):

This assessment task addresses the following subject learning objectives (SLOs):

1, 2, 3 and 5

This assessment task contributes to the development of the following Course Intended Learning Outcomes (CILOs):

C.1 and D.1

Type: Exercises
Groupwork: Individual
Weight: 30%

Assessment task 2: Code Comprehension

Intent:

The ability to understand code at a higher level than simple line-by-line translation is a key skill in developing strong mental models supporting program design and development skills.
Being able to read, comprehend and explain code is a fundamental step in developing deeper understanding.

Objective(s):

This assessment task addresses the following subject learning objectives (SLOs):

4 and 5

This assessment task contributes to the development of the following Course Intended Learning Outcomes (CILOs):

C.1 and E.1

Type: Exercises
Groupwork: Individual
Weight: 25%
Length:

50-100 lines of code, commented.

Assessment task 3: Project

Intent:

While understanding of the elements of a computer program is foundational, without comprehending how they function in a larger whole the core goal of programming is lost.
This task combines the individual elements learnt throughout the subject into a single, functioning whole.

Objective(s):

This assessment task addresses the following subject learning objectives (SLOs):

1, 2, 3, 4 and 5

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: Individual
Weight: 25%
Length:

Approximately 500 lines of code.

Assessment task 4: Exam

Intent:

Programming well requires robust mental models of both the problem to be solved and the tools and approaches that can potentially be used to solve it.

The exam is an opportunity for students to demonstrate understanding of key elements of programming skills independent of more complicated software development concerns.

Objective(s):

This assessment task addresses the following subject learning objectives (SLOs):

1, 2, 3, 4 and 5

This assessment task contributes to the development of the following Course Intended Learning Outcomes (CILOs):

C.1, D.1 and E.1

Type: Examination
Groupwork: Individual
Weight: 20%
Length:

1 day

Assessment task 5: Extension

Intent:

Knowledge and skill can be demonstrated in many ways. In programming subjects in particular, more sustained and free-form development than that allowed by normal assessment tasks can reveal a deeper understanding than otherwise apparent.
This task offers the opportunity for students to demonstrate a higher degree of knowledge and skill through work on more difficult computational and programming problems that extend beyond the immediate material of the subject.

Objective(s):

This assessment task addresses the following subject learning objectives (SLOs):

1, 2, 3 and 5

This assessment task contributes to the development of the following Course Intended Learning Outcomes (CILOs):

C.1 and D.1

Type: Project
Groupwork: Individual
Weight: Mandatory task that does not contribute to subject mark

Minimum requirements

To pass this subject, students must achieve an overall mark of 50% or greater.

References

Introductory Texts

1. H. Schildt, “Java: A Beginner’s Guide”, 8th Ed., McGraw-Hill Education, 2018.

2. K. Sierra & B. Bates, "Head First Java", 2nd Ed., O'Reilly, 2005. (Only covers up to Java 5, but the differences won't matter for this subject)

3. Eric Matthes, "Python Crash Course", 2nd Ed., No Starch, 2019.

4. Al Swigert, "Automate the Boring Stuff with Python", 2nd Ed., No Starch, 2019. (This gets a bit away from learning to program, to just using Python as a tool without deep comprehension, but it's still useful and the cover matches the Matthes one).

5. Z. A. Shaw, "Learn Python 3 the Hard Way", 1st Ed., Addison Wesley, 2017. (There's an older version for Python 2.7 which is just as good, and a follow-on book as well. This is probably my pick of the three intro texts at the moment).

6. P. Barry, "Head First Python", 2nd Ed., O'Reilly, 2016. (Same series as "Head First Java", so if you like that, you'll probably like this.)

More Advanced Texts

7. C. S. Horstmann, “Core Java, Volume I – Fundamentals”, 11th Ed., Prentice Hall, 2018.

8. J. Bloch, “Effective Java”, 3rd Ed., Addison-Wesley Professional, 2018. (Advanced text.)

9. H. Schildt, "Java: The Complete Reference", 11th Ed., McGraw-Hill Education, 2019.

10. M. Lutz, "Learning Python", 5th Ed., O'Reilly, 2013. (Maybe getting a bit old now, but quite comprehensive, and part of a huge series of O'Reilly books on Python.)