Course syllabus

COMPSCI 130: Introduction to Software Fundamentals

2019 First Semester

15 Points


Prerequisites and restrictions

Prerequisites:

Either:

  • COMPSCI 101, or
  • Achievement Standards NCEA Level 3: Digital Technologies and Programming: 91637 Develop a complex computer program for a specified task, or
  • Equivalent programming experience and departmental approval.

Restriction: 

COMPSCI 105, COMPSCI 107


Course Description

This is the entry course to Computer Science for students with prior programming knowledge. It focuses on the quality of processes used when developing software, and the quality of the software product produced using those processes.  The course provides an introduction to fundamental software development techniques and processes, such as reading, writing, and documenting programming code; decomposing problems; testing; debugging; using recursion; handling unexpected errors.  It also addresses efficient ways to organize and manipulate data, including sorting and searching algorithms, and writing software that uses and implements common abstract data types such as lists, stacks, queues, dictionaries and trees.  The course will be taught using the Python programming language.


Staff involved in the course

Course Coordinator

Lecturers

  • Andrew Luxton-Reilly, room 303-523, a.luxton-reilly@auckland.ac.nz
  • Mike Barley, room 303S.488, m.barley@auckland.ac.nz

Tutors

  • Teererai Maranga
  • Thomas Suselo
  • Adil Bhayani

Class Representative

  • Ben Kennerley, bken254@aucklanduni.ac.nz

Timetable

Lectures

  • Lectures are on Monday 10-11, and are held in 303-G20. 

Laboratories

  • Two laboratory sessions each week.  Laboratories begin on Wednesday in the first week of semester (i.e., each week there are two scheduled labs, but in the first week you just attend the second of the two labs).  All laboratories are compulsory.  They are held in 303S-B75 (Science Main, Room B75).

Tutorials

  • There are no tutorials in this course

Course Outcomes

A student who successfully completes this course should be able to:

  • Use common programming statements to implement iterative and recursive algorithms.
  • Export and import data structures (via file or console I/O) using standard text-based data formats.
  • Decompose a problem into several smaller tasks, design and implement a function for each task, and compose these functions into a program that solves the problem.
  • Use simple testing and debugging strategies to correct faulty programs.
  • Provide a useful level of documentation for all programs developed.
  • Work together with peers to collaboratively develop, and review, programs.
  • Demonstrate how typical data structures are modelled in memory.
  • Write programs that use standard abstract data types (lists, stacks, queues, priority queues, dictionaries).
  • Implement standard abstract data types using standard data structures such as arrays, linked lists, hash tables and trees.

Pre-requisite knowledge

This course assumes you know how to program, but makes no assumption about the programming language that you know.  The course is taught in Python, and includes a short overview of Python syntax at the beginning of the course.  To revise your Python knowledge, the following online text is recommended.

https://runestone.academy/runestone/static/thinkcspy/index.html


Lecture Schedule

Lecture Topics

  • Introduction
  • Modular Design
  • Modelling Program Execution
  • Complexity of Programs
  • Recursion
  • Abstraction, Classes, and Abstract Data Types
  • Stacks and Queues
  • Linked Data Structures
  • Non-Linear Data Structures
  • Trees
  • Conclusions

Assessment

Requirements for passing

You are required to pass both the invigilated (test) component of the course and the non-invigilated component.

  • Non-invigilated component:
    • Twenty labs worth 30% in total (including the group component)
    • Two projects worth 20% in total
  • Invigilated component:
    • Two tests worth 50% in total

Notes:

  • To pass the non-invigilated component you will need to achieve a satisfactory performance in the combined score of all the non-invigilated work (labs + projects).
  • To pass the invigilated component, you will need to achieve a satisfactory performance in the combined total of both tests.
  • You also need an overall mark of at least 50% out the full course total of 100%.

Labs

There are 20 assessed laboratory sessions, and 2 non-assessed lab sessions.  The 2 non-assessed laboratories are allocated for you to work independently on your projects.

The laboratories are worth 30% of your final mark. Every assessed laboratory session contributes towards your final grade.  You are expected to prepare for each lab by completing any reading and practice exercises before you attend the lab.  The laboratory sessions will include group activities where you will be expected to participate in discussions and collaborative problem solving, as well as individual programming tasks that are submitted online.  Some laboratory activities will be timed and will be conducted during your allocated laboratory session.

CodeRunner2

The programming tasks will be assessed using CodeRunner2.auckland.ac.nz

Thonny

The IDE we recommend for this course is Thonny.  It is free to download from thonny.org

Projects

There are two projects for this course, each worth 10% of the final grade.

Test

There are two tests for the course.  The combined total of the tests is worth 50% of the final grade.  The tests will be held in the evening of Thurs 11 April 6-8pm, and Thurs 6 June 6-8pm.  The tests will be 2 hours in duration.  They will be computer-based and will include tasks that require you to write programs that meet given specifications.  The tests will be invigilated.

Exam

There is no exam for this course. 


Assistance

There are a number of places where you can seek assistance with your learning.

Office Hours

All staff have office hours when they are available to students.  You are encouraged to come and discuss any matters arising from the course during those hours.  Staff are also frequently available at other times.

  • Andrew Luxton-Reilly: Available most Mondays11-2pm.  Open door policy -- come any time and I'll be happy to talk when my door is open (which is most of the time when I am not in meetings or classes).
  • Mike Barley: TBA

Lecture Recordings

All lectures are recorded.  They may be a delay of 1-2 days before the lecture recordings are distributed through Canvas.  You can find the lecture recordings on the Lecture Recordings page (COMPSCI 130 > Pages > Lecture Recordings).  Note that although the lectures are recorded, some learning activities conducted in class do not translate well to the recordings.  To maximise your learning opportunities, you are encouraged to attend the class in person.

Discussion Forums

The discussion forums on Piazza are regularly monitored by teaching staff, but we aim not to respond to questions immediately.  Success in Computer Science largely depends on the ability to find solutions to problems that you encounter, through systematic experimentation. We will typically wait 24 hours before responding to specific query.  Please make use of the forums to ask any questions that you think might be of interest to other students.  If your question is of a personal nature or relates to a unique situation that will be of little interest to others, then please contact the teaching staff directly.

Coursebook

The coursebook for COMPSCI 130 is an online resource located at: https://onlinetextbook.auckland.ac.nz/

The coursebook will contain references to further reading that is provided as supplemental material to enhance and extend your understanding.  You are encouraged to read as much of the supplemental material as possible.  Topics early in the course are focused on processes and the material will be covered primarily in labs.

Tutorials

Although there are no tutorials, the laboratory tutors are happy to answer any questions during the laboratory sessions.

Help with Canvas

For help with Canvas see:

https://www.auckland.ac.nz/en/about/learning-and-teaching/CanvasHomepage/canvas-help---support.html.


Handling illness or absence

If you must leave for family emergencies etc., PLEASE talk to the lecturer, or somehow get a message to the department. Very few problems are so urgent that we cannot be told quite quickly.

For problems affecting any of the assessed material, please see the lecturer, as soon as reasonably possible.


Academic Integrity

The University of Auckland will not tolerate cheating, or assisting others to cheat, and views cheating in coursework as a serious academic offence. The work that a student submits for grading must be the student's own work, reflecting his or her learning. Where work from other sources is used, it must be properly acknowledged and referenced. This requirement also applies to sources on the world-wide web. A student's assessed work may be reviewed against electronic source material using computerised detection mechanisms. Upon reasonable request, students may be required to provide an electronic version of their work for computerised review.

Please refer to http://www.auckland.ac.nz/uoa/home/about/teaching-learning/honesty.

Course summary:

Date Details