HAMBER COMPUTER SCIENCE

WHAT IS COMPUTER SCIENCE?

Computer science is the study of how computers work, and how we can use them to solve problems.

Computer scientists use a mix of math, logic, and problem-solving strategies
in order to write instructions that computers can follow.

WHY TAKE COMPUTER SCIENCE?

You will need to take computer science courses if you plan to study:

  • Mathematics
  • Engineering
  • Science
  • Commerce
Taking a computer science course in high school can help you get a head start and a solid foundation.

However, regardless of your future career choice, you can still benefit from learning how to code. Computers are used everywhere in society, and understanding how to program computers is a useful skill. There’s a growing demand for people who can program computers to solve new challenges. In addition, studying computer science will teach you valuable problem solving skills applicable to other areas.

CANADIAN COMPUTING COMPETITION

Every year, the top computer science students in Canada compete in the prestigious Canadian Computing Competition, hosted by the University of Waterloo. Students work to solve five problems by writing computer programs. The problems vary in complexity, and the top students in each national region are awarded a plaque and prize money.

As of June 2014, Hamber has won the Western Canadian Junior Championship seven times.
In the 2013 competition, Hamber broke a national record with four perfect scores.
In the 2014 competition, Hamber broke its own record with eleven perfect scores.

HAMBER'S JUNIOR CCC CHAMPIONS

  1. 2014


    Brennan Wilkes
    Rhys Rustad-Elliott
    Cheuk Yin Ng
    Benjamin Moir
    Heather Li
    Nicholas Hu
    Devin Gibson
    Paul Froese
    Ben CHapman-Kish
    Ryan Carrusca
    Tim Barry
  2. 2013


    Jasper Chapman-Black
    Phillip Wong
    Emmanuel Sales
    Ari Blondal
  3. 2012


    Ulysses Zheng
  4. 2011


    Leon Jiang
  5. 2010


    Kevin Luo
  6. 2008


    David Woods
  7. 2007


    Sanae Rosen

We offer three courses, all of these courses are taught in the Linux Computer Lab (Room 307).

The programming languages and libraries used in class are all cross-platform,
so students are able to run their applications on all operating systems (Windows, Mac, Linux)

JUNIOR PROGRAMMING

COURSE CODE: INT10 / ICTP11A

Junior Programming is designed for students without any previous experience in computer science. Students will be introduced to fundamental concepts of programming using the wonderful Python language. Students will also learn the basics of how to use a Linux operating system, as well as basic hardware concepts such as logic gates and the binary number system. Many concepts will be covered, and students should be prepared to learn something new every class.

  • Basic UNIX Commands
  • Python Language Fundamentals
  • Usage of SSH and remote logins
  • Binary Arithmetic
none
none

INTERMEDIATE PROGRAMMING

COURSE CODE: ICTP11B

Intermediate Programming is intended for students who have successfully completed the junior course. Students will learn how to write GUI (Graphical User Interface) applications using the pyFLTK library. Students will learn how to create arcade-style video games using the pygame library. Students will be introduced to the paradigm of object-oriented programming (OOP). Students will also be introduced to network programming.

  • Object Oriented Programming concepts
  • Utilizing and Managing Virtual Machines
  • Libraries such as SFML, Pygame and FLTK
  • Deeper understanding of networking

SENIOR PROGRAMMING

COURSE CODE: ICTP12

Senior Programming is intended for experienced students interested in further computer science study. Students will be introduced to complex concepts through the C/C++ language, such as pointers, dynamic memory, classes, inheritance and polymorphism. In addition, students will learn how to create video games in C++ using the SFML library. Students will also be exposed to higher level mathematics such as integral calculus and matrix algebra.

  • C/C++ Language Fundamentals
  • Dynamic Memory Allocation
  • Advanced Algorithms
  • Exposure to post-secondary level Mathematics
none

How to Think like a Computer Scientist

Web-book - Python 3.0

A great web-based book with runnable examples on the topic of problem solving using python.

Problem Solving with Algorithms and Data Structure

Web-book - Python 3.0

An amazing book that exposes readers to the importance of algorithms and data structure.

Byte of Python

PDF Book - Python 2.7+

A concise and to-the-point python book, this book is also used for the junior programming course.

Python Tutor

Code Visualizer - Python 2.7+

A web-based code visualizer capable of producing step-by-step visual representation of program execution.

Official Python tutorial

Documentation - Python 2.7+

The official documentation and tutorial from the python website.

Learn Python the Hardway

Web-book - Python 2.7+

A popular web-based book covering foundational topics of python and problem solving.

Python Module of the Week

Documentation - Python 2.7+

An in-depth documentation with code examples for some of Python's secret but powerful modules.

Python for You and Me

Web-book - Python 2.7+

Another python web-book with highlighted code example, a great resource to utilize in your learning.