**The Waterloo University: Guide for CEMC Contests**

The Waterloo University of Canada first opened its doors in 1957. About 42 engineering students stepped in with cooperative educational backgrounds but now more than 42,000 students study there annually. As a result, Waterloo is** Canada's No.1 University** where experience-based learning is practiced and has the best employer-student connections.

Today the University has formed a global network with more than 220,000 alumni from over 151 countries. Waterloo University attracts students and world-class scholars from all over the world. This diverse organization has generated various job opportunities and has become Canada's top start-up by private investment. Waterloo University brings brilliant and like-minded people together and helps them become future entrepreneurs, innovators, inventors, leaders, and curious explorers.

At present, there are many faculties and departments such as arts, computer, math, science, etc., with various departments. And several research Centre and institutes, which includes the CEMC. In addition, the center brings various **Waterloo CEMC Contests** for students to develop various skills for a better future. In this article, we will share a detailed note on all the contests held by CEMC.

CEMC stands for the Centre for Education in Mathematics and Computing, where a couple of exciting **waterloo math contests** and **waterloo coding contests** are held. **Waterloo CEMC contests** help impel students to grow their confidence, help them learn problem-solving skills, and learn much more about computing and mathematics.

The first **Waterloo CEMC contest** was held in 1963 by a group of secondary school teachers. They developed the first math **contest by the University of Waterloo** in Ontario. From there, a series of multiple **Waterloo math contests** and **Waterloo computing contests** started. These contests inspired many students and helped CEMC grow into Canada's most leading mathematics and computer science authorities for young minds.

With over 50 years of excellence, CEMC is one of the largest organizations in Canada. CEMC, with over 40 faculty and staff members and hundreds of dedicated volunteers, is a part of this vast organization. About 265,000 students from 80countries take part in these amazing contests and learn a lot. In addition, 630learners participate in CEMC workshops each year, and over 300 teachers are attaining an advanced degree in the MMT program (Master of Mathematics for Teachers). CEMC, with their mission to increase their students' interest, enjoyment, understanding, and concepts of mathematics and computing they have made a commitment to some principal values such as access, readiness for future, community and impact.

You can check https://www.geekedu.org/ to take different courses in order to improve your computer and mathematics skills to perform well in the test.

There are 12 **CEMC Waterloo math contests** and 2 **Waterloo computer contests **that inspire students of 5 to 12 grades to take part and learn various things. However, these Waterloo CEMC contests are much more than just competitions. They are made according to every student and even challenge the brightest students. The various **Waterloo CEMC contests** include the following:

All the students can register for the **waterloo mathematics** contest through the website or from their school. There are 2 mediums available for attempting the exam. The student can give the exam on paper as well as online. The students will get their results exactly after one week. The students who attempted their exams online may need to wait a bit to announce their results. The students should solve multiple problems to prepare themselves for the **math waterloo contest.** They need to concentrate on problem-solving techniques to solve any kind of problem without any issue. Many teachers use **waterloo past math contests** in classroom, and CEMC problem set generator enables anyone to build random sets of problems with the choice to modify the topics covered. The **math contest of the University of Waterloo** includes questions taken from different sources. They take questions that are common in the curriculum of all Canadian Provinces.

The registration process is quite easy for the students. They can do it from their schools as well from their homes. Students have the choice to write the exam on paper or give it online. The source materials for the questions of the exam are taken from the curriculum common to all Provinces. The first few questions of the exam are logical and conceptual. The second part of the exam consists of questions that are created to test ingenuity and insight. Rather than testing memory, the **high school math contest** by CEMC is designed to test the analytical and logical thinking and mathematical problem-solving technique of the student. Therefore, students should focus on their problem-solving techniques and prepare for their **math contest** **by waterloo** accordingly. They should also look at the past papers of the contest and take notes from them.

**FGH high school math contest** is conducted in written form only and mail their papers. Electronically returned contests will not be accepted. Questions for the **waterloo mathematics** **contest** are according to the common curriculum in all Canadian provinces. Students can prepare for the **waterloo contest by past** exams and by trying to solve problems. The results are posted online, and teachers generate certificates accordingly.

You can enroll in one of the best mathematic courses for high school students to prepare for the contest.

Euclid is a written contest, and the waterloo team allots the required material for the** math contest**. However, homeschoolers will attempt the contest under the supervision of an adult. The contest content includes questions from curriculum up to the final year of secondary school including it. Students are advised to prepare for the **waterloo math contest** from Euclid eWorkshop, Grade 12 courseware, mathematics course manual, and past contests. The result comes online.

Most CIMC questions are from up to and Grade 10 mathematical curriculum. And most CSMC problems are based on up to and 11 Grade mathematical curriculum, which includes the final year of secondary school. In addition, students can prepare for the CEMC **waterloo math contest** from Grade 12 open courseware and try to prepare by solving more problems. Some teachers use past contests as well.

Geekedu offers a number of different mathematic courses such as algebra, calculus, probability to improve problem solving skills. By enrolling in these courses you can perform well in the contest.

For the official virtual event, CEMC hosted the event using zoom meeting. As a result, all Canadian schools can participate remotely. However, only one team, including six students and one teacher, can participate per school.

For the unofficial virtual event, teams are provided with access to the website to download** University** **Waterloo math contest** instructions and material. In an unofficial event, teams meet virtually on zoom and have approximately 3 hours for the contest.

The difficulty of questions in the contest varies. Teams with a senior student may have the edge over other teams. For Preparation, students can try to solve as many problems as possible and solve past papers.

The Beaver Computing Challenge focuses on critical thinking and computer-related thinking. Hence, questions are also inspired by computer science with respect to the mathematics curriculum that is common in all provinces of Canada. However, connection to the computer is shown in all past questions for students' ease. To prepare for BCC, students can go through some past contest questions. However, there is no need to prepare as the questions are based on critical thinking, and students will come across a new subject. Teachers have access to students'' results, and they can generate certificates, then students can print certificates from the website.

The Canadian Computing Competition (CCC) started in 1996 as a platform for computer fanatic students to learn and develop computer and programming and knowledge in a fun and interesting way. This forum is for the high school scholars in Canada to acquire various aspects of computers and programming. Top senior participants are then invited to attend the Canadian Computing Olympiad (CCO). Approximately 20 senior participants are invited to attend CCO that are classified as Canadian School Officials. The CCO held at the University of Waterloo is a week-long event with some workshops, a contest, and some other extra co-curricular activities. This contest also determines the participation in IOS (International Olympiad in Informatics).

The CEMC Waterloo computing contest allows students to determine their ability and knowledge towards designing, understanding, and implementing algorithms. In addition, the students of secondary level can learn computing and computer programming in a fun way. The **computing contest waterloo** is divided into two levels:

Junior level: Any student who has taken computer science 20 and has basic programming skills.

Senior-level: Any student who has top grades in computer science 30 and has done many self-studies regarding structures and algorithms.

The CCC is written in schools with the help of CCC Online Grader. CCC Online Grader is a program that provides instantaneous feedback on solutions to algorithmic programming problems. It is used for the competition as well as holds the past contest problems that are highly recommended to prepare for the CCC competition.

The CCC competition is of 3 hours and has five questions for both junior and senior levels. It is not a team competition; however, teachers need to register for contests written in respected schools. After the competition, 20 top senior contestants are invited to CCO. The results of the competitions decide Canadian Team Participants who will take part in the International Olympiad informatics that is held every year in a different country. It is at CEMC's disposal to select both CCO contestants and Canadian IOI Team Members.

For programming languages used in the **University of Waterloo computing**, the students are advised to use CCC Online Grader. Currently, CCC Online Grader supports the following languages, Python (2.x and 3.x), C, C++,Pascal, PHP, Java, and Perl. CCO contestants must use Java and C/C++programming languages. Although CCC Online Grader supports various languages, it may not be possible to achieve a perfect score using a particular programming language. (For instance, Java and Python).

The general rules for the CCC competition are as following:

- The use of the internet for chatting, email, and search is forbidden. However, students can use the internet for code completion, code editing, contest submission, and consulting official programming language documentation.
- Students cannot use another starter code or source.
- Students are permitted to use rulers, compasses, graph paper, and rough sheets during competition.
- Students are allowed to use manual dictionaries to translate English and any other language.
- Up to 50 submissions are accepted per problem.
- In case of using prohibited tools and sources, the student will be responsible for the consequences such as zero marks in CCC competition, the student will be banned from every CCC exam, and the school will be informed.

Junior level- any student with basic knowledge of elementary programming skills.

Senior level-any student with an intermediate or advanced level of knowledge of programming skills.

The Canadian Computing Competition is held in February, and the CCO invitation for the event is sent in May. For the coming year, the University of Waterloo computing contest dates is February 16, 2022, for students in North and South America, and February 17, 2022, for students outside North and South America.

Students can register for CCC from the website according to the deadlines mentioned. However, the deadline to register for Canadian Computing Competition CCC is February 8,2022, and the date for Canadian Computing Olympiad is not announced.

The format for CCC paper is divided into two categories: junior division paper and senior division paper. Both papers have five questions each, and each question contains 15 points. The first question is easier, and the range of difficulty increases from the first to the last question in both papers.

- Question 1 and 2: contains straightforward questions, e.g., basic conditions and loops.
- Question 3 and 4: contains a bit challenging questions, e.g., combinations of loops, counting, and conditions.
- Question 5: contains some advanced questions, e.g., clever algorithms, efficient sorting, and recursion.

- Question 1 and 2: contains basic algorithms, e.g., sorting, searching.
- Question 3 and 4: contains more advanced algorithms, e.g., mathematical reasoning, careful counting.
- Question 5: contains IOI level question.

Students are encouraged to prepare for CCC from the following material:

- Prepare from CCC online grader, which accesses to hands-on practice and previous contests.
- Students can prepare from past CCC contests by waterloo, test data, problems, and their solutions that are present from 1996 till now on the website.
- Students can prepare from the Competitive Programmers Handbook by Antti Laaksonen and from the book Competitive Programming by Halim and Halim.
- Students can prepare from some sample programs illustrating input and output. Here are the sample programs: C version, C++ version, Java version, Pascal version, PHP version, Perl version, Python 2 version, and Python 3 version.
- Some links to CCC software tools are given by the International Olympiad of Informatics (IOI) that may be helpful in stages 1 and 2 of the competition.

The total marks of each division are 75 points in the competition. Contestants are graded only according to the number of questions effectively completed in anyone paper, either junior or senior. The prize for junior-level students is limited to certificates and medals. On the other hand, prizes for senior-level entries include certificates and invitation to attend Canadian Computing Olympiad (CCO).

You can prepare for CCC contest by taking different programming courses on Geekedu. The courses ranges from basic to advance and will definitely help you to improve your skills.

**Links:**

https://cemc.uwaterloo.ca/contests/computing.html

https://cemc.uwaterloo.ca/contests/bcc.html

https://cemc.uwaterloo.ca/contests/ctmc.html

https://cemc.uwaterloo.ca/contests/csimc.html

https://cemc.uwaterloo.ca/contests/euclid.html

https://cemc.uwaterloo.ca/contests/fgh.html

https://cemc.uwaterloo.ca/contests/pcf.html

https://cemc.uwaterloo.ca/contests/gauss.html

https://cemc.uwaterloo.ca/contests/past_contests.html#ccc

https://cses.fi/book/index.php

https://cemc.uwaterloo.ca/contests/computing/software.html

https://cemc.uwaterloo.ca/contests/computing/details.html#languages

**Introduction:**

Learning how to code can be difficult, especially when you don’t know where to start or what skills are needed and useful as a programmer. This article explains all the concepts you’ll need to know to have beginner, intermediate, or advanced programming knowledge in any language, whether it be in Python, Java, C++, or any other language.

Before beginning to work on projects using the language of your choice, you need to check which level you’re at. The main levels are:

- Beginner: Being a beginner means you still need to learn about variables, conditional statements, loop basics, and functions.
- Intermediate: An intermediate-level programmer will know how to work with and use data structures, advanced loops, algorithms, and object-oriented programming.
- Advanced: If you are advanced, you will understand all of the concepts above and be able to use them for applications such as Artificial Intelligence or game development.

These concepts serve as learning benchmarks regardless of the language you choose because they are applicable in every language. Once you have learned how to use these concepts in one language, another language will be much easier to learn as well!

Before we can begin creating fun and complicated projects, it’s important to understand the basics of coding. Some of these concepts include creating variables, using operators and booleans, creating loops and if-statements, and creating functions. Below we’ll take a deeper look at each of these concepts and how to learn them.

When coding, a variable is a way of storing information by giving it a name that the computer can refer to it by. For example, take this line in Python:

In this case, the variable myPet was created, and in this case, it holds the value “dog”. The computer can use this name to refer to the dog inside the code. Variables can be integers, strings, or floats, giving you a wide range of values to choose from.

An integer is a whole number without decimals, a float is a number with a decimal in it, and a string is a word or phrase.Hint:

Although Operators and booleans sound pretty hard at first, they're relatively simple when you practice using them a lot. Operators are simply math terms, such as division, multiplication, addition, subtraction, etc. However, when coding these all have different symbols. For example, in Python, multiplication is done with an * instead of an X. There are also two types of division: Division with a single slash returns a whole number. For example, *(4//3)* results in 1,but* (4/3)* results in *1.333*.

These types of operators make coding and calculations much simpler so make sure you learn how to use them well.Hint:

Booleans are a type of logic that the computer uses to decide whether to run code or not. Booleans unclose keywords or symbols representing “and”, “or”, and “not”, as well as a state: true or false. Each boolean has different requirements to be true. “And” takes two inputs, and if both are true, the result is true. “Or” takes two inputs, and if at least one of them is true, it is all true. And finally, a not changes a value to its opposite, so it would change a true to a false and vice versa. While this may take a bit of getting used to, booleans are simple to understand as you get more experience using them.

Loops are another important concept to understand, as they allow us to run a section of code multiple times or keep running it until something happens. There are two types of loops:

- While loops
- For loops

A while loop would look something like this:

This code will print “*Hello World*” until the value for i is greater than or equal to 3.

Hint:These loops are especially useful in creating games as they let players take their turns until a specific event occurs.

For loops specify exactly how many times the code should repeat. For example, a for loop looks like this:

As you can see, both of these codes would produce the same output but use different methods to do so. Once you get used to using these loops you will be able to create cool projects using repeating code.

If-statements are quite possibly the most commonly used skill for any beginner in coding. They are easy and efficient and let us check for a specific event without having to write out long code. If-statements are used in more complex concepts as well, such as algorithms and advanced loops, so having a strong understanding of them is essential.

Functions are modules of code that are “self-contained” and allow us to run them anywhere without retyping the long section of code. For example, if you’re working on a big project and you have a large section of code that runs a bunch of times, you can make it into a function and simply call the function rather than having to retype everything again. Functions make code simpler and more efficient. Making them an essential skill for every kid to learn when they code.

Languages such as Python often have libraries that allow kids to make complex code much more simply. A library is a collection of resources that are free to use. Some popular Python libraries are the math library, Turtle, and Tkinter. These are a great way for kids to learn to code, by simplifying code and making it easier to create complex projects even with very little experience. This is especially good for young children who may not yet understand enough code to know what todo if they didn’t have libraries to assist them.

Once you’ve learned all of the above concepts and know how to use them, you would be considered an intermediate programmer. The following topics are somewhat more complex, but they all build off of the previous concepts so they shouldn’t be too hard to learn and understand if you have a strong understanding of the beginner concepts.

Data structures are formats of storing and categorizing information. For languages such as Python, this includes lists, tuples, and sets. Other languages such as Java and C++ also include arrays, stacks, and queues. Many other data structures can be used but these are some of the most common ones. Structures like these make it easy to store information or variables in an easily accessible and organized way. Learning these structures as a young programmer is great because it will give you the basic skills needed for building bigger and more complex projects.

Algorithms are another essential intermediate coding concept for kids to learn. They are specific procedures to solve a specific problem. Some common types of algorithms to learn are:

- Recursive: repeats itself until the problem is solved
- Divide and Conquer: Breaks the problem into two sections and solves each section, combining them at the end to get the final result.
- Dynamic: “Remembers” the last calculated value and stores it and uses it to solve for the next value
- Brute Force: tries all possible combinations until it finds the correct one

Although these are only a fraction of the types of algorithms you can learn, they are relatively simple, making them great for kids who are new to coding.

For students interested in coding competitions such as the CCC or USACO, algorithms like these are essential to know, as they are used to solve many of the given problems.Hint:

This is a type of coding where the code is divided into reusable, simplified pieces of code called “classes”, which are then used to create “objects”- specific examples within the class. For example, if you were using a program to classify programming languages, “Language” would be the class, and specific examples such as “JavaScript” or “Ruby” would be objects. This concept is useful for languages such as Python, Java, and C++, as it breaks down complex ideas into simpler and more organized code.

The previous concepts learned as a beginner or intermediate programmer will allow you to create some very cool and useful programs. However, programming languages can do a lot more than this, and by using some more advanced concepts you can make some even better programs. If you’re interested in learning even more, here are some of the most common and useful concepts to learn:

Artificial Intelligence (AI) is one of the most interesting topics to explore when it comes to programming because it is still fairly new and there are so many applications. AI involves creating “human knowledge” with code and allowing computers to make decisions based on logic and reasoning as if they were human. If you are interested in learning about AI, try learning from Youtube, Google’s Teachable Machine, or one of Geekedu’s advanced-level classes. Learning how to use AI as a child or student is great because it allows you to experiment with and create an even wider variety of programs.

Once you understand all of the beginner and intermediate concepts, you will be able to create some fun games using the programming language of your choice. Python has a great built-in library called Tkinter that makes creating games fun and easy, and languages such as Java and C++ can be used to create even more detailed and professional games.

These are just some of the many programming concepts available to learn, and hopefully they’ve helped you decide what level you’re at and what you can learn to improve. If you are interested in learning how to use and apply these concepts, try some of Geekedu’s classes. They offer Python, Java, and C++ classes for children that teach all of these concepts and more, making learning to code fun and easy. Hopefully this guide helped inform you about all of the most important programming concepts to know and understand and has given you an idea of what programming level you’re at and what your next steps will be.