Computer Science Resources

Where can I get help?

Computer Science Academic Advisor
Computer Science majors can contact [at] if they need help with course selection.

TAs and Instructors
All course TA office hours are being held in HP4125.
Use their office hours! Ask specific questions before, during, and after class.

SSSC Mentors
If you would like to talk about specific study habits and methods, SSSC mentors can help you. Feel free to drop in or make an appointment through mySuccess (Access MySuccess through Carleton360) and click on Science Student Success Centre. Find a mentor on the Computer Science Team by searching for Computer Science at Meet Our Mentors.

Online Resources


Programming Practice





Java documentation

Python documentation

Python Visualizer

C++ documentation

Javascript reference

Other Resources

3Blue1Brown: Essence of Calculus

This is a series on YouTube covering the core fundamentals of calculus using computer generated graphics and visuals. The goal of the series is for you to walk away with an intuitive understanding of calculus, rather than simply memorizing formulas. It is a good series for those who are taking first year calculus (MATH1007 or equivalent) or those who need a refresher on calculus.

3Blue1Brown: Essence of Linear Algebra

This is a series on YouTube covering the core fundamentals of linear algebra. The series is aimed at developing an intuitive understanding of linear algebra concepts so you not only understand what to do, but also why you are doing it. The material is presented with the aid of computer generated graphics making it perfect for those who want material presented visually. It is a good series for those in (MATH1107 or equivalent) or those who need a refresher on linear algebra.

Reddit: dailyprogrammer

The dailyprogrammer is a subreddit where users post coding challenges ranging from easy to hard for others to solve. It has many practice challenges that can be solved in most programming languages. Users also share answers which offer a chance to examine other programmer’s code and different ways of approaching problems. It also offers a chance for others to examine your code should you wish to post it. It is a good resource for Computer Science students at any level.


CodeinGame is a coding practice site where you can practice using coding puzzles and compete against other coders in basic AI development. The site is fairly unique among coding challenge sites, as it offers a graphic display of the code that you have written, allowing you to see what the code is doing. As opposed to other coding challenge sites, Codeingame allows you to play a game through coding giving you a visual understanding of what the code in your game is doing.

General Tips

  • Keep in mind that many students do poorly in computer science and academics in general because of a lack of organization and NOT a lack of intelligence or effort, so always try to be more organized and efficient
  • Use a planner to keep track of assignment due dates, midterm dates, exam dates and studying
  • Always keep track of what methods works for you and what doesn’t because it differs from person to person
  • Attempt practice problems and assignments by yourself first before you get any help - this will help you prepare for midterms
  • Be prepared to ask for help when needed whether it be specific concept help from TAs and profs or help regarding study habits from SSSC mentors


  • Try printing out the values of variables at various points in your code to ensure they are what you think they’re supposed to be, as this can narrow down what parts of your code are causing issues. It may not be where you think!
  • If you are comfortable and your IDE has one, try learning to use your IDE’s built-in debugger. This can make checking variable values and checking what parts of your code are running much faster and more efficient

Assignment Tips

  • Assignments can take a much longer time to complete than you expect. Start as soon as you receive the assignment (even if you just glance through it).
  • Break down the assignment into questions you don’t understand and things you think you can tackle. Work on understanding the course material instead of just trying to complete your assignments.
  • Divide the assignments into smaller, more manageable parts - have a plan of how you intend to solve it and finish the various parts of the assignment.
  • Use your TA and instructor’s office hours. Come prepared with specific questions.
  • Ask questions after assignments are due, especially on stuff you got completely wrong. Then you will not repeat the same mistakes on a midterm or final. Instructors and TAs will also have more time to spend with you after due dates and can work you through the correct solutions.
  • Before doing an assignment, write out a step-by-step procedure of how you will program and design the problem on paper. For some of the simpler assignments this will seem mundane and unnecessary, but getting into the habit is important because it is an invaluable skill for longer and more complicated projects.

Midterm/Exam Tips

  • Make sure you understand the assignment questions/tutorial questions and any code done in class.
  • Do not let material that you don’t understand build up. Get help as soon as you can or you will fall further behind.
  • Try getting used to writing code down on a piece of paper rather than just on the computer. This is a good skill to have as you may be asked to write down code and explain your thought process during a job interview in the future.
  • Some professors do multiple choice midterms/exams, which can be tricky. Make sure to review your answers thoroughly to avoid silly mistakes.
  • Make sure you study important definitions and vocabulary taught in your course. You don’t want to lose marks on a test because you didn’t know what the question was asking about.

1805 – Discrete Structures I

Attending Class

  • Attend class so you can learn the core concepts and problems, and the methods of solving them. The assignments are built off of these core concepts, but generally have questions with a more advanced application so it’s important to understand the basics!

Extra Help

  • Go to TA office hours and your instructor’s office hours as soon as you need help. The course builds on itself as the semester progresses, so it’s important to get help early!

Practice Makes Perfect:

  • Treat it like a math course and do as many practice problems as you can
  • Make sure you are regularly practicing to solidify concepts in your head


Other Resources:

  • Carleton has a resource called the Discrete Mathematics Study Centre
  • Try searching online for the concepts you are having trouble understanding. For Computer Science students, Google is your best friend!
  • patrickJMT on YouTube has nice, quick examples of Discrete Math to help you understand the major ideas.



  • Have an up-to-date resume before applying for a job. You want potential employers to know everything you’ve been up to!
  • Any new skills you have gained from previous courses, personal projects and past jobs can be useful for expanding the contents of your resume. This includes skills not directly related to the CS field (e.g. A past summer job working at a fast food restaurant can teach you important interpersonal skills that are important for any job)
  • Having personal projects on your resume can be really important, as it tells employers that you are not just trying to get through school, but are legitimately interested in computer science and software development as a field



  • Come out to networking events at Carleton! Future networking events and workshops can be found on the "mySuccess" page (on Carleton Central). You can register for a variety of different events that can provide you with job opportunities.
  • Before a networking event, try to learn as much as you can about which employers will be there and the companies they work at. You will have a better understanding of which companies you are actually interested in and the employer will see that you care about working at that company.
  • Networking is a two-way street. Although the recruiter/employer is trying to assess your fit for the company, you are also trying to find out if the company is right for you.
  • Be sure to be respectful when networking - first impressions count!



  • Networking doesn't necessarily have to take place at an official event. Look through your current connections (Family, friends, classmates, etc) and see if you can find an opportunity!
  • Co-op

Other Useful Resources

Changing the Curve: Women in Computing

This resource explores the influence of women in computer science and highlights key figures in the technology field. Also highlighted is the history of technological advances that notable and successful women have contributed to. Insights on gender gap and equality issues are shared as well as statistics on how women's representation in technical fields has evolved over the last several decades.

A Guide for Minorities in STEM: Increasing Workplace Diversity

This resource covers the importance of STEM programs being more inclusive to minorities, in addition to being a guide providing resources for minority students in STEM programs, along with scholarships for women, African American, Indigenous, and Hispanic STEM students.

Resources for Women in Computer Technology

This resource reviews the history of women in computer science, explores the current opportunities for women, and identifies resources to help women explore and grow in computer science fields.

Computer Science & Engineering Resources for Women in STEM

This resource provides a general guide for young women interested in learning more about the overall field of computer science and engineering. It features STEM degree or career guides for women and other additional resources students may find helpful. How to Learn Computer Programming Languages

This resource provides an overview of computer programming languages and links to resources students may find helpful when first starting to program. 


Last updated 08/09/2023

Search Carleton