Contribute to guide

Table of Contents

Introduction


This is an open-source guide for students at the University of Windsor.

This document is meant for students to provide assistance/resources to other students. Any UWindsor student is welcome to add to and modify it.

Contributing


Anyone can contribute to this document through GitHub's editor - no coding/git skills necessary. Click the "Contribute to guide" button at the top of this page and it will bring you to GitHub's text editor. You can make/preview changes on there and create a pull request when you're done. An admin will then approve your changes and add it to production. The document is written in markdown syntax.

We highly encourage people to contribute so that we can make this a very useful resource for students. Add any information you might find useful and feel free to add/change sections.

If you're posting any opinionated information, use your name in the sentence (i.e. David recommends...).

Contributors

Please add yourself to this list (link is optional) if you've contributed to this guide.

Courses


Typical course offerings by semester

Updated Winter 2020

Requirements Legend

❤️ Bachelor of Computer Science (General)
💙 Bachelor of Computer Science (Honours)
💛 Bachelor of Computer Science (Honours Applied Computing)
💚 Bachelor of Science (Honours Computer Science with Software Engineering Specialization)
💜 Bachelor of Commerce (Honours Business Administration and Computer Science)

Course CodeCourse NameFallWinterSummerRequired
COMP-1000Key Concepts in Computer ScienceOfferedOfferedOffered❤️💙💛💚💜
COMP-1047Computer Concepts for End-UsersOfferedOfferedOffered
COMP-1400Intro to Programming and Algorithms IOfferedOfferedOffered❤️💙💛💚💜
COMP-1410Intro to Programming and Algorithms IINot OfferedOfferedOffered❤️💙💛💚💜
COMP-2057Intro to the InternetOfferedOfferedOffered
COMP-2067Programming for BeginnersNot OfferedOfferedOffered
COMP-2077Problem Solving and Information on the InternetOfferedOfferedNot Offered
COMP-2097Social Media and Mobile Technology for End UsersOfferedOfferedOffered
COMP-2120Object Oriented Programming Using JavaOfferedOfferedOffered❤️💙💛💚💜
COMP-2140Computer Languages, Grammars and TranslatorsNot OfferedOfferedNot Offered💙💚
COMP-2310Theoretical Foundations of Computer ScienceOfferedNot OfferedNot Offered💙💚
COMP-2540Data Structures and AlgorithmsOfferedOfferedOffered❤️💙💛💚💜
COMP-2560System ProgrammingOfferedOfferedOffered❤️💙💛💚💜
COMP-2650Computer Architecture IOfferedOfferedOffered❤️💙💛💚💜
COMP-2660Computer Architecture IIOfferedOfferedNot Offered❤️💙💛💚
COMP-2707Advanced Website DesignOfferedOfferedNot Offered
COMP-2800Software DevelopmentNot OfferedOfferedNot Offered💚
COMP-3057Cyber-EthicsNot OfferedOfferedOffered
COMP-3077Web-Based Data ManagementNot OfferedOfferedNot Offered
COMP-3110Introduction to Software EngineeringOfferedNot OfferedNot Offered💙💚
COMP-3150Database Management SystemsOfferedOfferedNot Offered❤️💙💛💚💜
COMP-3220Obj Oriented Software Analysis and DesignOfferedOfferedOffered❤️💙💛💚
COMP-3300Operating System FundamentalsNot OfferedOfferedOffered❤️💙💛💚💜
COMP-3340WWW Information System DevelopmentNot OfferedOfferedOffered❤️💛💜
COMP-3400Advanced Object Oriented System Design Using C++Not OfferedOfferedNot Offered💛
COMP-3500Introduction to Multimedia SystemsOfferedNot OfferedNot Offered
COMP-3520Introduction to Computer GraphicsNot OfferedOfferedNot Offered
COMP-3540Theory of ComputationOfferedNot OfferedNot Offered💙💚
COMP-3670Computer NetworksOfferedNot OfferedOffered💙💛💚💜
COMP-3680Network PracticumNot OfferedOfferedNot Offered💙💛💚💜
COMP-3710Artificial Intelligence ConceptsOfferedNot OfferedNot Offered
COMP-3770Game Design, Development, and ToolsOfferedNot OfferedNot Offered
COMP-4110Software Verification and TestingNot OfferedOfferedNot Offered💚
COMP-4150Advanced and Practical Database SystemsOfferedNot OfferedNot Offered💛
COMP-4200Mobile Application DevelopmentOfferedNot OfferedNot Offered💛
COMP-4220Agile Software DevelopmentOfferedNot OfferedNot Offered💛
COMP-4250Big Data Analytics and Database DesignNot OfferedOfferedNot Offered💛
COMP-4400Principles of Programming LanguagesOfferedNot OfferedOffered💙💚
COMP-4540Design and Analysis of AlgorithmsOfferedOfferedNot Offered💙💚
COMP-4670Network SecurityNot OfferedOfferedNot Offered
COMP-4730Maching LearningOfferedOfferedNot Offered
COMP-4740Advanced Topics in AI IINot OfferedOfferedNot Offered
COMP-4770Artifical Intelligence for GamesNot OfferedOfferedNot Offered
COMP-4800Selected Topics in Software EngineeringNot OfferedOfferedNot Offered💚
COMP-4960Research ProjectOfferedOfferedNot Offered💙💚
COMP-4990Project Management: Techniques and ToolsOfferedOfferedNot Offered💙💛💚

Bird (very easy) courses

Your degree audit will have a section called "Any Area of Study" that allows you to take any course from any department (including the easy Computer Science courses that don't normally count for your major). The regular Computer Science Honour degree allows seven of these courses, and the Software Engineering specialization degree allows four.

List of bird courses:

  • ECON-1100 Introduction to Economics I - Harshdip found this course easy. The midterms and finals were all multiple choice.
    • Note: Bailey recommends taking this course online instead of in-class (if available). There are no assignments (only the midterm and final) and the midterms were all online, therefore open book. Read the textbook thoroughly and you will do well.
  • ECON-1110 Introduction to Economics II
  • COMP-2067 Programming for Beginners
  • COMP-2057 Intro to the Internet - Simple HTML/CSS assignments.
  • COMP-2097 Social Media and Mobile Technology for End Users - A bit busy with assignments/projects but still overall very easy
  • COMP-2707 Advanced Website Design - Easy exams, covers HTML, CSS, a bit of Javascript but a lot of work with assignments/projects

School Resources

Planning your courses

It is always better to have a good plan about the course you'll be taking each semester. Harshdip has completed 4 semesters, taking all the major courses. This way saving up all the electives is one approach. If you find 5 courses overwhelming, taking only 4 courses or an easy elective as a 5th course is another approach. Check out the list of bird courses.

First two years of University most CS students take the same courses as CS doesn't have many electives. I also recommend you take mandatory courses as third and fourth year you are going to want to have electives to take fun CS courses.
Harshdip has followed this exact sequence.

First Semester
  • COMP-1000 Key Concepts in Computer Science
  • COMP-1400 Intro to Programming & Algorithms I
  • MATH-1760 Functions and Differential Calculus
  • MATH-1250 Linear Algebra
  • Elective (See if you can take another mandatory course you will have to do in the future)
Second Semester
  • ECON-1100 Intro to Economics 1 or Physcology (I took econ because I find it more fun and applicable)
  • COMP-1410 Intro to Programming & Algorithms II
  • COMP-2650 Computer Architecture 1
  • MATH-1730 Integral Calculus
  • MATH-1020 Mathematical Foundations
Third Semester
  • COMP-2310 Theoretical Foundations of Comp Sci
  • COMP-2120 Obj Oriented Programming using Java
  • COMP-2560 Systems Programming
  • COMP-2540 Data Structures & Algorithms
  • STAT-2910 Statistics for the Sciences
Fourth Semester
  • COMP-3150 Database Management Systems
  • COMP-2140 Languages, Grammars and Translators
  • COMP-2660 Comp Archi II
  • COMP-3220 Obj Oriented Software Anal/Des
  • COMP-3710 Artificial Intelligence Concepts

Co-op and Internships


See Eric's presentation on behalf of CSS for landing an internship. This covers a bit of everything (resumes, applying, interviews).

Frequently Asked Questions (FAQ)

Q: Can I do an internship/co-op during 1st-year?

A: The co-op program does not start until the summer of your 2nd year, however, you can apply to internships on your own in 1st year. You should try to apply to places in 1st year, you have nothing to lose!

Q: What is the difference between a co-op and internship?

A:

Co-opInternship
AssistanceWorkshops for resumes, applications, basic interviewing skills provided by co-op departmentYou have to seek assistance/research yourself. https://reddit.com/r/cscareerquestions is a good resource.
PayUsually around $18-22/hour in CanadaVaries significantly but tend to pay more than co-op
Cost~$500/semester once co-op startsNone
CompaniesLimited to co-op listings (mostly local Canadian companies, some big names such as IBM, Nokia, big banks). There are a few companies that only hire through co-op.Most companies offer internship programs
LocationsMostly Canada (usually Toronto (GTA) or Ottawa, there are a few companies in Windsor)Anywhere! For Canada, Toronto, Waterloo, and Vancouver are the biggest tech hubs. For the USA, the San Francisco Bay Area, Seattle, and New York are the biggest.
Listings/ApplicationsCo-op portal lists all companies, applications usually done within the portalOn your own to find/apply to companies (more info in this guide)

Q: Should I pay for co-op or just go for internships?
Do both! Apply for internships and use co-op as a fallback. Once you've gotten your first co-op/internship it's significantly easier to get the next one on your own, and many people outgrow the co-op program.

Q: Can I apply for internships while in the co-op program?
A: Co-op advisors advise against applying without their permission, but in the end there's nothing stopping you from applying for internships on your own. If you find one by yourself and want to stay in the co-op program, co-op will gladly accept that company as a co-op placement after a little screening.

Resume Examples

Job Boards

  • intern.supply - Links are usually broken but this is a master list of fantastic companies that offer internships which you can search for yourself.
  • LinkedIn - It's not just a social network for bugging recruiters. LinkedIn has an integrated job board where you can find tons of internships.
  • Summer 2019 Internships - A document on GitHub that keeps track of summer internship opportunities.

Interview Preparation

Eric recommends studying/practicing technical interview questions for any mid-to-large-sized company. Most of them will ask you highly technical coding questions.

CS Resources
  • LeetCode - Eric highly recommends LeetCode and used it for all of his interview prep. It has hundreds of questions with difficulty ratings and company-specific questions submitted by interviewees. Most internships will ask LeetCode easy/mediums.
  • Leetfree - This website contains all LeetCode Premium problems for free.
  • Cracking the Coding Interview - Eric highly recommends reading this book before getting into LeetCode for interview prep. You can find it on Amazon or probably a PDF online.
  • Cracking the Coding Interview Solutions - Online solutions for the problems in Cracking the Coding Interview. Harshdip recommends to try all the problems on your own and only looking for solutions once you have tried everything you know.
  • HackerRank - Brandon highly recommends getting familiar with the HackerRank editor and available languages. Many companies will supply a timed HackerRank coding challenge to be completed when applying to internships. It can also be used like LeetCode to solve hundreds of technical programming problems.
  • Glassdoor - Glassdoor allows people to post reviews, salaries and most importantly interview questions they've received from specific companies.

Working in the U.S.A.

Almost every major tech company in the USA hires Canadians and will sponsor you for a visa. US companies tend to pay significantly more and provides great opportunities. Eric highly suggests trying to land an internship in the Bay Area or New York.

Visa

You'll need to obtain a J-1 visa to intern in the United States.

A common misconception is that you can get a visa yourself - this is not true. You need a company who is willing to sponsor your visa to work in the United States. Once you find this company they will do most of the work for you, you'll just have to submit some documents/forms. Don't stress about this step.

Getting paid

You'll need an American bank account to get paid if you're working in the USA. This is very easy to obtain - just go to your preferred bank once you're in the USA and bring your passport and visa documents just in case.

It's also a very good idea to obtain a Social Security Number in the USA so that you can apply for a credit card and build up a credit score in the US (can be helpful in many ways in the future). This is also straight-forward and you need to wait until you're in the USA for at least 10 days before you can apply.

Miscellaneous


  • University Guide by Jose Alba - Jose Alba is a recent graduate from University of Windsor and he has written a good document where he shares his experiences and tips for making the most out of your university life.

Hackathons

Hackathons are free competitions where you team up with people to build cool projects. They're a great way to use your knowledge from school and create cool a project to put on your resume. Usually attending one of these looks nice your resume, and may even land you a job as recruiters attend these events as well.

  • Workshops available throughout event
  • Complete and build projects in 24-48 hours
  • Great networking opportunity and team up with other students
  • Recruiters actively looking for you
  • Larger hackathons will cover travelling expenses
  • Companies giving away SWAG
  • Lots of great prizes
  • All experience levels welcome, with preference typically given to first-timers
  • Most hackathons provide free food and travel reimbursement

Link to MLH competition list

Student Exchanges

Jose thinks exchanges are fun and 100% worth it. The Exchange Coordinator, Michelle, is a fantastic and knowledgable person and can help you with any concerns/questions.
- Jose's University of Essex Experience
- Jose's Ewha Womans University Experience
- Student Exchanges at UWindsor

Resources

Cheat Sheets and Docs

Tutorials

Online Judges and Challenges

  • LeetCode - It has hundreds of questions with difficulty ratings and company-specific questions submitted by interviewees. Most internships will ask LeetCode easy/mediums.
  • Leetfree - This website contains all LeetCode Premium problems for free.
  • HackerRank - Similar to LeetCode with hundreds of technical programming problems. Many companies will supply a timed HackerRank coding challenge to be completed when applying to internships.

Books

  • Cracking the Coding Interview - A very helpful book that goes over common programming problems and how to solve them as well as information on interviewing with Big N companies.

Goodies

As a student in Computer Science there are many free trials, offers, and products that are available to you.