Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: daixieit

COMP9021 Principles of Programming - 2023

Course Code :  COMP9021

Year :  2023

Term :  Term 3

Teaching Period :  T3

Delivery Mode :  In Person

Delivery Format :  Standard

Delivery Location :  Kensington

General Course Information

Course Code :  COMP9021

Year :  2023

Term :  Term 3

Teaching Period :  T3

Is a multi-term course? :  No

Faculty :  Faculty of Engineering

Academic Unit :  School of Computer Science and Engineering

Delivery Mode :  In Person

Delivery Format :  Standard

Delivery Location :  Kensington

Campus :  Sydney

Study Level :  Postgraduate

Units of Credit :  6

Useful Links

Handbook ClassTimetable

Course Details & Outcomes

Course Description

This course provides students with solid conceptual knowledge and practical skills of both generic programming techniques and Python programming, to be used effectively in the many specialised courses that expect students to have acquired strong enough programming skills  and well mastered the Python language. The features of the language are covered to a

signifcant depth, and there is a strong emphasis on problem solving, from a broad base of   application domains, with quite a few that involve mathematical notions. Like all foundation courses for postgraduate students, there is a lot of contents to study in limited time and the learning curve is not gentle. Still the course does not assume any prior knowledge of programming in general, or of Python programming in particular, as its content is self-contained for students with the expected mathematical background.

Course Aims

The aim of the course is to provide students with a solid foundation on fundamental

programming concepts and principles, and to become profcient in the programming language   Python, including object-oriented features and the tkinter library to create widgets. Students will learn to design solutions to a broad range of problems and implement those solutions in the

form of small to medium programs, using appropriate programming techniques and tools.

Relationship to Other Courses

This is a core course for students in program 8545 (Master of Information Technology).

Course Learning Outcomes

Course Learning Outcomes

CLO1 : Design, implement and test programs written in a language with procedural, object- oriented, and functional constructs.

CLO2 : Apply Python language, including advanced syntax and programming techniques.

CLO3 : Analyse what happens behind the scene when operating on Python data types, with an understanding of efciency and memory use.

CLO4 : Understand fundamental data structures and algorithms.

CLO5 : Design programs to solve small to medium scale problems.

CLO6 : Create clear, reliable, well-structured, well-tested, well-documented programs.

CLO7 : Apply appropriate tools, in particular for editing, testing and debugging.


Course Learning Outcomes

Assessment

Item

CLO1 : Design, implement and test programs written in a language with procedural, object-oriented, and functional constructs.

Assignments Quizzes

Final Exam

CLO2 : Apply Python language, including advanced syntax and programming techniques.

Assignments Quizzes

Final Exam

CLO3 : Analyse what happens behind the scene when operating on Python data types, with an understanding of efciency and memory use.

Assignments Quizzes

Final Exam

CLO4 : Understand fundamental data structures and algorithms.

Assignments Quizzes

Final Exam

CLO5 : Design programs to solve small to medium scale problems.

Assignments Quizzes

Final Exam

CLO6 : Create clear, reliable, well-structured, well-tested, well-documented programs.

Assignments Quizzes

Final Exam

CLO7 : Apply appropriate tools, in particular for editing, testing and debugging.

Assignments Quizzes

Final Exam

Learning and Teaching Technologies

Echo 360 | EdStem

Learning and Teaching in this course

The two 2 hour lectures will discuss part of the notes, some of which come with automatically generated videos. To fully beneft from the lectures, students should beforehand study the

available notes and videos. The weekly lectures will also discuss quizzes and assignments as they are released. Lectures are designed to help students acquire good learning strategies,

provide valuable insight, and improve problem solving skills. Consultations are for individual

contact, to help resolve more individual issues and get personal support for the homework,

clarify concepts, get feedback, practice better. Online discussions are for exchanges, for being part of a community, where everyone seeks support and provides support to others on any

matter than is of interest to other students. From week 1 to week 9 included, with week 6

excluded, programming quizzes will be released after the second lecture and answers should be submitted by noon on the day of the second lecture of the following week (except for quiz 5,

released in week 5 and due in week 7); details on submission will be provided during lectures.

This will help students master the fundamental notions and techniques that will have been

presented during lectures up to the previous week, keep up to date with the current material, and give them confdence that they are well on track. Assignments will allow students to turn theory  into practice, transform passive knowledge into active knowledge, design solutions to problems, and experience the many ways of making mistakes and correcting them when translating an

algorithmic solution to an implementation. There will be two assignments, due by Monday 10am of week 7 and week 11, respectively. The fnal exam will be prac exam, take place on campus, in  CSE labs, requesting students to complete code stubs that will take advantage of the doctest

module, with some tests being provided in the stubs.

Assessments

Assessment Structure

Assessment Item

Weight

Relevant Dates

Assignments

Assessment

FormatIndividual

26%

Start DateEach assignment is released between 3 and 4 weeks before it is due, and discussed in some of the lectures in-

between.

Due DateThe frst assignment is due by 10:00am on Monday of week 7. The second assignment is due by 10:00am on

Monday of week 11.

Quizzes

Assessment

FormatIndividual

24%

Start DateEach quiz is released on Wednesday of the previous week, after the lecture has taken place and introduced the quiz.

Due DateThe 8 quizzes are due by 12:00pm (noon) on Wednesday of weeks 2, 3, 4, 5, 7, 8, 9 and 10.

Final Exam

Assessment

FormatIndividual

50%

Start DateTBA during Exam Week

Due DateTBA during Exam Week

Assessment Details

Assignments

Assessment Overview

The two assignments are programming assignments, each being worth 13%.

Sample tests are provided together with assignment specifcations.

Submissions are automatically assessed against a battery of tests, all different to the sample tests.

Students are encouraged to seek syntactic, stylistic and algorithmic feedback on their implementation during consultation.

Assessment information

Quizzes

Assessment Overview

The eight quizzes are small programming assignments, each being worth 3%.

Sample tests are provided together with quiz specifcations.

Submissions are automatically assessed against a battery of tests, all different to the sample tests.

Students are encouraged to study the sample solutions as well as seek syntactic, stylistic and algorithmic feedback on their implementation during consultation.

Final Exam

Assessment Overview

The fnal exam consists of independent programming questions, to be automatically assessed against a battery of tests.

Programming stubs are provided as templates that make use of the doctest module, with some tests inserted to help students develop and debug their code.

General Assessment Information

Grading Basis

Standard

Requirements to pass course

A total mark of at least 50.

Course Schedule

Attendance Requirements

Students are strongly encouraged to attend all classes and review lecture recordings.

General Schedule Information

This is a tentative schedule:

Week 1: Introduction to operators, strings, lists, tuples, dictionaries, control structures, reading from fles, printing, functions.

Week 2: Functions from the random module. Exceptions. Sets. More operations on strings and lists. More on control struc- tures. Arithmetic operators. Positional and keyword arguments,

default values, use of star for function parameters and arguments.

Week 3: String formatting. Various forms of comprehension. Representations in a given base,    conversions between bases. The Unicode character set. Sorting. Lambda expressions. Floating point computations. Iterators. Timing pro- gram execution.

Week 4: Walrus operator. Zipping and plotting sequences. Finer use of timeit, insights on the

complexity of operations on lists versus sets. Global versus local vari- ables. More operations on sets. Simple versus complex types as default argu- ments. Bitwise operators.

Week 5: More on generator expressions. Slices. Insights on space allocation for lists. Working

with paths in a platform- independent manner. Reading from and writing to csv fles. More use of the standard library: defaultdict and Counter from collections, product from itertools... Generator functions.

Week 7: Named tuples. Operations with in- fnities. Regular expressions. Lists of lists. Numpy arrays, types, reshaping, broadcasting, arithmetic and Boolean operators. More on plotting,     creating animations with matplotlib. Command line arguments.

Week 8: Inner functions. Recursion. Mem- oisation, using default arguments or the lru_cache decorator. The __de- faults__ attribute of functions. Iter- tools module: permutations. Turning recursive designs into iterative designs. Specialised operations on strings.

Week 9: Classes and objects. Special meth- ods, in particular for the implementa- tion of

operators. Customised excep- tions. More on function parameters. Insights on object creation and initial- isation and on OO syntax. Abstract classes. The fraction module.

Week 10: Dynamic programming. Inheritance. Decorators. Properties, getters and setters.   Sorting. Presentation of more optional material and modules for spe- cialised applications: beautifulsoup for web crawling, PIL for image process- ing, pygame...

Course Resources

Prescribed Resources

There is no required textbook, and the provided material is self-contained.

Jupyter notebook sheets, together with static html fles produced from those, will be provided as notes. Some of the notes are complemented with automatically produced videos. Jupyter

notebook sheets offer many advantages over the more traditional lecture notes: the cells that

make up a Jupyter notebook sheet can be edited, cells can added or deleted, cells that contain code can be excuted, allowing students to guess what the output will be and check that the

guess is correct, letting students play a more active role when they learn from existing code.

These Jupyter notebook sheets have been very carefully designed to cover an extensive part of the Python language and include, besides all the basics, advanced syntax and programming

techniques, more than found in most textbooks, all presented in the context of interesting

problems, most of which should be relevant to the practical problems that will be encountered in the workplace or in other courses.

Course Evaluation and Development

Student feedback on the course will be obtained via electronic survey at the end of session.

Student feedback is taken seriously, and continual improvements are made to the course partly based on it.

Staff Details

Position

Name

Email

Location

Phone

Availability

Equitable Learning Services Contact

Primary

Contact

Postgraduate

coordinator

Eric Martin

[email protected]

Building K17, room 409

+61 2

9065 5587

No

Yes

Other Useful Information

Academic Information

I. Special consideration and supplementary assessment

If you have experienced an illness or misadventure beyond your control that will interfere with your assessment performance, you are eligible to apply for Special Consideration prior to, or   within 3 working days of,  submitting an assessment or sitting an exam.

Please note that UNSW has a Fit to Sit / Submit rule,which means that if you sit an exam or    submit a piece of assessment, you are declaring yourself ft enough to do so and cannot later apply for Special Consideration.

For details of applying for Special Consideration and conditions for the award of supplementary assessment, please see the information on UNSW’s SpecialConsiderationpage.

II. Administrative matters and links

All students are expected to read and be familiar with UNSW guidelines and polices. In particular, students should be familiar with the following:

Attendance

UNSWEmailAddress

SpecialConsideration

Exams

ApprovedCalculators

AcademicHonestyandPlagiarism

EquitableLearningServices

III. Equity and diversity

Those students who have a disability that requires some adjustment in their teaching or learning environment are encouraged to discuss their study needs with the course convener prior to, or at the commencement of, their course, or with the Equity Ofcer (Disability) in the Equitable

Learning Services. Issues to be discussed may include access to materials, signers or note- takers, the provision of services and additional exam and assessment arrangements. Early   notifcation is essential to enable any necessary adjustments to be made.

Note: This course outline sets out the description of classes at the date the Course Outline is

published. The nature of classes may change during the Term after the Course Outline is published. Moodle or your primary learning management system (LMS) should be consulted for the up-to-date class descriptions. If there is any inconsistency in the description of activities between the

University timetable and the Course Outline/Moodle/LMS, the description in the Course Outline/ Moodle/LMS applies.

Academic Honesty and Plagarism

UNSW has an ongoing commitment to fostering a culture of learning informed by academic

integrity. All UNSW students have a responsibility to adhere to this principle of academic

integrity. Plagiarism undermines academic integrity and is not tolerated at UNSW. Plagiarism at UNSW is defned as using the words or ideas of others and passing them off as your own.

Plagiarism is a type of intellectual theft. It can take many forms, from deliberate cheating to

accidentally copying from a source without acknowledgement. UNSW has produced a website with a wealth of resources to support students to understand and avoid plagiarism, visit:

student.unsw.edu.