Sample courses

Explore your computing interests with us

Courses in software development, algorithms, networking, cloud and web computing, databses, graphics, machine learning and user interface design allows students to develop areas of specialized expertise. 

The focus in the Bachelor of Computer Science program is to give students the foundation to create new and innovative technologies that will shape how we use computers and interact with each other in the future.

Here are just a few of the courses you might take:

CSCI 3120
Operating Systems

This course includes a review of I/O and interrupt structures. Topics covered include dynamic procedure activation, system structure and evaluation, memory management, process management, process scheduling, recovery procedures, concurrency, deadlocks, resource allocation, protection, and operating systems implementation.

Prerequisites: I 2110, CSCI 2121, and CSCI 2132

CSCI 1106
Animated Computing

Not your typical first-year computer science class, the Animated Computing class is a hands-on introduction to web design, game design and robotics. Students will do collaborative team work, perform analysis to help understand the problems at hand, and apply critical thinking not only to the problems, but to the proposed solutions as well.

Prerequisites: There are no prerequisites.

CSCI 3101
Social, Ethical and Professional Issues in Computer Science

Computers can enable people to do things that our present laws and policies were not formulated to cover (hacking, sharing files on the internet and companies sharing data). In such cases, people need to be able to decide for themselves the best course of action, and defend such decisions.

This course aims to develop the ethical reasoning skills and sensitivities that computer professionals will need to make good decisions and to justify them. The course includes a general introduction to ethical theories and their use in making and justifying decisions. We then consider various issues and case studies, illustrating the kinds of problems that can arise from the use and misuse of computers and technology.

Prerequisites: There are no prerequisites.

CSCI 4168
Game Design and Development

This course covers the fundamentals of digital game design with an emphasis on team-based development. In this course students will produce a significant game using techniques and principles derived from established state-of-the-art industry practices. Topics include an examination of game design theories, programming architectures, audio-visual design and game production.

Prerequisites: CSCI 2110 and CSCI 3161

CSCI 4174
Network Security

Security stands out as a critical issue in the design and deployment of information systems in general, and networks in particular. This class will deal with the design of secure information systems with emphasis on secure networking and secure information transfer. It will also include topical and emerging areas in security such as the establishment of an organization-wide security plan and bio-metric identification systems.

Prerequisites: CSCI 3171

First-year courses and degree requirements

To view suggeseted courses for your first year and/or courses you must take to meet your degree requirements, visit the Faculty of Computer Science website.

Specialization options

Check out our specialized certificate options and become even more marketable to employers. The Bachelor of Computer Science (BSc) program offers specializations in:

  • Data Science
  • Graphics, Gaming and Media
  • Artificial Intelligence and Intelligent Systems
  • Communications Technologies and Cyber Security
  • Bioinformatics


Networking Computing

Learning directly from NIMS Lab

Dr. Zincir-Heywood, a full professor within the Faculty of Computer Science, has been at Dalhousie since 2000. She leads the Dalhousie Network Information Management and Security (NIMS) Lab – a group that does research on autonomous systems.

“These are systems that try to learn and monitor their own behavior,” she explains. “We study how these systems monitor their behavior and how they modify themselves depending on the feedback from the environment. If we can understand the behaviour that we observe in these computers, then we can understand the people who are using these computers.”  Read more about Dr. Zincir-Heywood.