UTS: 41039 Programming 1 - Information Technology, UTS Handbook Using a modern browser that supports web standards ensures that the site's full visual experience is available. Consider upgrading your browser if you are using an older technology. University of Technology Sydney SEARCH this site UTS Handbook 2022 Information Technology UTS Handbook How to use this handbook General information Principal dates Academic year dates Course areas Analytics and Data Science Business Communication Creative Intelligence and Innovation Design, Architecture and Building Education Engineering Health Health (GEM) Information Technology International Studies and Social Sciences Law Science Transdisciplinary Innovation Study package directory Archives Applying and enrolling Rules of the University 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 2022 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 2. Solve computational problems by using abstract modelling and conceptualisation 3. Design and create simple functioning programs to achieve objectives 4. Interpret, describe, and document programs using clear communication 5. Reflect on programming decisions and formulate alternatives 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.2. Fluent application of engineering techniques, tools and resources. 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.) UTS: Handbook 2022 UTS: Handbook | Site map UTS is a member of the Australian Technology Network of Universities About UTS | Library | Newsroom | Staff | Contact us © Copyright UTS - CRICOS Provider No: 00099F - 20 March 2022 1:30 PM The page is authorised by Director, Institute for Interactive Media and Learning Send comments to APO Disclaimer | Privacy | Copyright | Accessibility | Web policy | UTS homepage