COMPSCI 107: Computer Science Fundamentals

COMPSCI 107: Computer Science Fundamentals

2017 Semester 1

15 Points

Prerequisites and restrictions

Prerequisites:

Either Achievement Standards NCEA Level 3: Digital Technologies and Programming:

  • 91637 Develop a complex computer program for a specified task, and
  • 91636 Demonstrate understanding of areas of computer science;

or, equivalent programming experience and departmental approval.

Restriction: 

COMPSCI 101, COMPSCI 105

Course Description

This is the entry course to Computer Science for students with prior programming knowledge. It focuses on data structures and efficient ways to manipulate data. This course is taught using the Python programming language. Topics include: a brief recap of programming concepts, recursion, regular expressions, data interchange, abstract data types, linear data structures (lists, stacks and queues), non‐linear data structures (heaps, hash tables, trees), searching and sorting. 

Staff involved in the course

Course Coordinator

  • Andrew Luxton-Reilly, room 303-523, a.luxton-reilly@auckland.ac.nz

Lecturers

  • Andrew Luxton-Reilly, room 303-523, a.luxton-reilly@auckland.ac.nz
  • Robert Sheehan, room 303-409, r.sheehan@auckland.ac.nz

Tutors

  • Diana Benavides Prado, room 303S-596, dben652@aucklanduni.ac.nz

 

Timetable

Lectures

  • Monday 3-4pm, Rm: 105-029
  • Thursday 3-4pm, Rm: 105-029
  • Friday 3-4pm, Rm: 105-029

Laboratories

  • One laboratory each week as selected. All laboratories are held on Tuesdays in 303S-B75. Laboratories begin in the 2nd week of semester (i.e. first lab will be 14th March).

Tutorials

  • There are no tutorials in this course

Course Outcomes

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

  • decompose a problem into several smaller tasks, design and implement a method for each task, and compose these methods into a program for solving problems 
  • provide a useful level of documentation, in the form of program comments, for all programs developed
  • define a class to represent an object
  • write code which handles exceptions
  • use a standard data interchange method to read and write complex data types
  • write simple programs that use standard linear data structures to store data (Arrays, Linked Lists, Stacks, Queues)
  • write simple programs that use standard non-linear data structures to store data (Heaps, Hash Tables, Trees)
  • compare algorithms based on their Big O performance
  • implement recursive solutions to simple problems
  • implement recursive data structures such as linked lists and trees
  • explain the basic algorithm for any of the studied sorting methods
  • use regular expressions to extract data from a body of text

 

Lecture Schedule

Lecture Topics

  • Introduction
  • Basic Python Syntax
  • Sequences
  • Memory models and Scope
  • Dictionaries and Sets
  • Reading and Writing Text Files
  • Exceptions
  • Documenting, Testing and Debugging
  • Classes
  • Comprehensions
  • Generators
  • Algorithm Analysis
  • Abstract Data Types (ADT) - Stacks
  • Queues
  • Data Interchange - JSON
  • Unordered Lists
  • Ordered Lists
  • Recursion
  • Graphics and Fractals
  • Searching - Sequential and Binary Search
  • Hash Tables
  • Map ADT
  • Sorting
  • Introduction to Trees
  • Priority Queues and Binary Heaps
  • Binary Search Trees
  • Regular Expressions

Assessment

Requirements for passing

This course is a practical course.  That means you have to pass the lab component as well as the written (test and exam) components.

  • Labs worth 25%
  • Test worth 15%
  • Final exam worth 60%

 

Notes:

  • To pass the lab work you will need to have at least 12.5% out of the 25% lab mark.
  • To pass the written component, you will need to have at least 37.5% out of the combined test and exam total of 75%.
  • You also need an overall mark of at least 50% out the full course total of 100%.

Labs

The laboratories are worth 25% of your final mark. The labs start in the second week of semester. Every laboratory session contributes towards your final grade. The labs are designed to give you practical experience with the concepts which you have learnt in lectures. Each week you should make sure you have read through the lecture slides and have done any other preparation required before you attend the laboratory.

The laboratories are submitted using the CodeRunner website. You may submit your solution to the laboratory exercises up until 3 days after the laboratory session (i.e. Friday midnight). Submissions are graded by running a series of test cases of the code in a sandbox and comparing the output of your program with the expected output. This automated testing allows you to obtain immediate feedback on your progress throughout the course.  Some submissions will also be graded manually to provide further feedback.  You will be able to access your exercises by logging into:

https://www.coderunner.auckland.ac.nz/moodle/

Assignments

There are no assignments for this course.  All practical work is completed as part of the laboratory exercises.

Test

The test is worth 15% of your final mark, and will be held during the normal lecture time on Thursday 13th April.

Exam

The final exam is worth 60% of your final mark. Please check Student Services Online for the exam time and date. The exam is closed book, and calculators are not permitted. Provisional exam results can be obtained from Student Services Online.

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: Mon and Fri 1-2pm.  Room 303.523.  Available most other times - drop by and see.
  • Robert Sheehan: Open door policy - come any time.
  • Diana Benavides Prado: To be decided

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 107 > 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 within Canvas are regularly monitored by teaching staff. 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.

Textbook

The textbook is Problem Solving with Data Structures and Algorithms by Brad Miller and David Ranum, Luther College.  The book is available for free as a PDF under Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.  An online version with interactive exercises is available at:

https://interactivepython.org/runestone/static/pythonds/index.html

Note that the textbook is provided as supplemental material to enhance and extend your understanding.  You are encouraged to read the relevant chapters in parallel to the in-class activities.

Tutorials

Although there are no tutorials, the laboratory tutor is 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 assignments or tests, see the lecturer, as soon as reasonably possible.

For illness during exams (or other problems that affect exam performance) students MUST contact the University within one week of the last affected examination, to apply for an aegrotat pass (for illness) or compassionate pass (other problems).  The one week limit is strictly enforced.

Refer to the University information about Aegrotat and Compassionate Considerations:

https://www.auckland.ac.nz/en/for/current-students/cs-academic-information/cs-examiation-information/cs-aegrotat-and-compassionate-consideration.html

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 Due