Meet your instructor
Omer Gimenez Llach holds a PhD in Discrete Math by the Universitat Politecnica de Catalunya (UPC) in Barcelona, Spain. He was Assistant Professor for 5 years in Barcelona, and then moved to the USA to work as a Software Engineer for Google for 14 years. Before that he had a passion for teaching and programming competitions, both as a participant but also as coach or organizer, like the Catalan and the Spanish Computing Olympiads. He is planning to reignite this passion in Eugene, Oregon, where he moved with his family in 2020.
Computational thinking comes first
Computational thinking is just a branch of Mathematics in disguise. In these courses we will follow the tradition of Math Circles, where rigorous Mathematical thinking is introduced to kids in a way that is interesting, intuitive and appropriate for their ages. We put special emphasis on students being able to solve problems on their own.
Computational thinking is useful for everyone! But in addition, for some students it is also *deeply enjoyable*, the same way that some kids end up finding out that they really enjoy doing piano, chess or climbing. These are the kids who will take the most advantage of our course.
Start Early, Appropriate Programming Languages
We don't wait for college to teach kids piano, chess or climbing. The goal of the classes is to teach computational thinking to kids to the edge of their abilities and knowledge, whatever these are. The actual programming language we teach in the course is just a means to that end. For younger ages, we think Scratch is the best choice (more rewarding, less typing, syntax easier to follow); for older ages, we choose industry-standard programming languages like Python and Java.
Project-oriented Approach
The curriculum emphasizes putting the newly developed skills to practice, through a myriad of problems and small projects that use graphics, audio, and game design. Often, this will involve learning concepts in geometry, algebra, physics and many other disciplines that students might not be familiar with, but that might be necessary to understand and build the project. We really want to keep our students motivated and challenged.
Designed by professionals
This curriculum has been successfully taught and refined at Prime Factor school in Washington State for the last 10 years. We have lots of experience in software engineering and teaching, and we sincerely believe this is the best approach to introduce computational thinking to kids in Eugene.
Small classes, individual attention
Our classes are small (4-8) and we try to group students according to their abilities. This is the main reason why students are asked to take placement tests before joining us. We will also ask students to do some small amount of homework problems to both make sure they are following the course and challenge them, and we will review these homeworks individually.
But as much as we would like groups to be similar, we also understand that students come in many shapes: different starting knowledge, different learning speeds and different interests. We are going to make a very dedicated effort to make sure that every student will get not only personalized advice and assistance, but also personalized challenges and, within the limits of the group setting, to try to touch the student's interests as much as possible.
Classes location
The classes will take place at Peterson 102 within the University of Oregon facilities (map). We want to thank the UO Department of Mathematics for their support in helping us secure this classroom, even if this is not an UO course and Omer is not UO faculty.
Registration process
To join our classes, please take the placement test first. After the instructor approves it, please
fill in the registration form to join the class.
Financial aid is available. You can take a 25% off when filling in the
registration form or contact Omer for other scholarship requests.
The classes start on September 29th.
Contact information:
Omer Gimenez Llach eugene.programming.circle@gmail.com
Course Details: Three 10-session trimesters. 90 min each session. Placement Test is required. Homework is given after each class, and the students are expected to submit and discuss their work each week.
This course for grades 4-6 runs in three levels over the school year: Level 1 – Foundations and Games (Fall), Level 2 – Games, Geometry, Algorithms (Winter), and Level 3 – More Games, and Applications (Spring).
In this smart coding course, students learn real coding by creating their own games and animations in Scratch. Over three trimesters, we explore key programming concepts, design cool and complex projects, and even expand our knowledge of geometry and physics. Fun graphical projects, math simulations, and games put these concepts to work while fostering computational thinking and problem-solving skills.
Already know some Scratch? You’re welcome to join mid-way — there’s always more to learn and many exciting projects to program! Contact us to find the best starting point for your child.
Trimester 1, Foundations and Games: learn core computational concepts — sequencing, loops,
conditionals, operators, variables, messages, and events — through animations,
interactive stories, and game projects.
Trimester 2, Games, Algorithms, Geometry: we take on larger projects and more advanced games.
Students learn about clones and work on gaming with clones, work with lists and strings,
tackle algorithmic challenges. Many projects deepen students's understanding of 2D geometry,
from designing geometric patterns to coding visual illusions.
Trimester 3, Advanced Games and Applications: Dive into advanced logic and multi-lesson games,
such as Tower Defense. Do physical simulations like shooters,
fractal drawing and scrolling backgrounds.
Course Details: Three 10-session trimesters. 90 min each session. Placement Test is required. Homework is given after each class, and the students are expected to submit and discuss their work each week.
This course introduces newcomers or students with limited coding experience to the exciting world of programming. Students will gain a solid understanding of programming and enhance their critical thinking and problem-solving skills as they learn to design, code, and debug Python programs.
The main topics covered in this course are: variables and their scope; logical and math operators; control flow - conditionals and loops, functions; fundamental data structures - lists, strings, tuples, dictionaries. As the course progresses, the students will become familiar with the more advanced functionality available in Python and learn to use it to their coding advantage.
The course emphasizes quality coding practices, program organization and design, and includes plenty of algorithmic problem-solving. The students will also use the built-in graphics module of Python to create games and geometric art.
Requirements: solid knowledge of mathematics at grade level, understanding of coordinate plane geometry, developed typing skills. Acceptance is by a placement test.
Course Details: Three 10-session trimesters. 90 min each session. Placement Test is required. Homework is given after each class, and the students are expected to submit and discuss their work each week.
The course is open to both newcomers and students with some coding experience in Java or another programming language.
This year-long course is designed to introduce and give plenty of programming practice in an object-oriented language at a rate targeted at advanced 8th–11th-grade students. The goal of the course is to establish a firm understanding of the essentials of object-oriented programming and architecture through extensive algorithmic practice, simulations, graphical programs, and games.
We will be learning control structures, fundamental data types (classes, arrays, lists, sets, maps), functions, classes and objects, inheritance, design, and architecture of object-oriented programs. The emphasis goes into algorithmic design and practices, solid understanding of core concepts of object-oriented programming, and developing a good coding style. We will also be talking about many relevant theoretical aspects of CS: memory allocation, data representation, binary and hex numbers, etc.
Requirements: Knowledge of math at Algebra level, solid understanding of the geometry on the coordinate plane.