Backlog

Module-Complexity ๐Ÿ”—  

Expand all

Mandatory Tasks

These tasks will help consolidate your learning for this sprint. You should complete as many of these as possible before class on Saturday.

Analyse and Refactor Functions ๐Ÿ”— Clone

Analyse and Refactor Functions ๐Ÿ”—

Learning Objectives

Task code

CYF-1173 - make sure to include this in your PR title or description.

https://github.com/CodeYourFuture/Module-Complexity/tree/main/Sprint-1

Learning Objectives

Why are we doing this?

It is easier to understand complexity in the abstract than it is to recognise and apply it in our everyday code. In this module you will focus on noticing complexity in code you and your colleagues write.

In Sprint 1, we have provided you a selection of functions that are written in inefficient ways. Your goal is to collaborate on refactoring these functions. It’s not enough to improve the code, you must also explain why your refactor is objectively better.

Maximum time in hours

6

How to get help

Bring this to class and study groups. The goal is to collaborate.

How to submit

Fork the repo to your own GitHub account Make regular small commits with clear messages When you are ready, open a Pull Request to the CYF repo Make sure you explain your work clearly in your PR message

Complete Space and Time Complexity in Data Structure and Algorithms ๐Ÿ”— Clone

Complete Space and Time Complexity in Data Structure and Algorithms ๐Ÿ”—

Learning Objectives

https://www.wscubetech.com/resources/dsa/time-complexity

Learning Objectives

Why are we doing this?

This is a primer on space and time complexity. It’s basically a reference guide. You do not need to memorise this information. Read through it and make notes for yourself. Make sure you can answer the following questions:

  • What is Big O Notation?
  • Which has a higher complexity, bubble sort or timsort?
  • What’s the problem with nested loops?

Complete

  1. https://www.wscubetech.com/resources/dsa/time-complexity
  2. https://www.wscubetech.com/resources/dsa/space-complexity

Maximum time in hours

3

How to get help

Share your blockers in your class channel https://curriculum.codeyourfuture.io/guides/getting-help/asking-questions/

How to submit

No submission step. This is background reading for your own understanding.

Anything else?

Enjoy this folk dance bubble sort: https://www.youtube.com/watch?v=Iv3vgjM8Pv4

Practice a mock Technical Interview ๐Ÿ”— Clone

Practice a mock Technical Interview ๐Ÿ”—

You will need to discuss this in class, make sure to do your interview before the class day.

You will be applying for jobs soon! Part of that process is doing interviews.

Schedule a mock technical interview with a volunteer. You can ask for interviews on Slack in #cyf-interview-practice.

Tell the interviewer you want to practice a technical interview. Tell them the kind of job you want to be applying for (what kind of role, and what kind of company? Perhaps a software engineer at a finance company? Or a backend engineer at a start-up? Choose for yourself).

Make sure to read the technical interviewing guide before you do your interview.

Do the mock interview, and get feedback about how you could do better next time.

Prepare your lesson on complexity ๐Ÿ”— Clone

Prepare your lesson on complexity ๐Ÿ”—

Learning Objectives

https://sdc.codeyourfuture.io/complexity/prep/

Learning Objectives

Why are we doing this?

By teaching we learn. The best way to really understand a subject well is to know it well enough to teach another.

In class this week you will be teaching something. You will be explaining one of the following computer science concepts. You will not use a computer to explain this, but something else. This could be a whiteboard presentation, a drawing, a game, a conversation, or anything you like that will help you communicate the concept, except a computer!

Topics (for both sprints)

  1. Caching
  2. Precomputing
  3. Memoisation
  4. Time complexity of either logarithmic, linear, quadratic, or exponential algorithms
  5. Any sorting algorithm that takes your fancy
  6. Any search strategy

Maximum time in hours

4

How to get help

Come to Friday demos to practice your lesson. Ask trainees in the ITP course to give you feedback.

How to submit

Give your demo in class.

How to review

No response

Anything else?

Read Chapter 8 of How Computers Really Work ๐Ÿ”— Clone

Read Chapter 8 of How Computers Really Work ๐Ÿ”—

Learning Objectives

https://nostarch.com/how-computers-really-work (but CYF can lend you a copy)

Learning Objectives

Why are we doing this?

We will be thinking again about the capacity and limits of real computers. Read Chapter 8 and complete exercise 8-1: Factorial. You do not need to complete the associated Raspberry Pi project.

Maximum time in hours

1.5

How to get help

Share your blockers in your class channel https://curriculum.codeyourfuture.io/guides/getting-help/asking-questions/

https://www.bbc.co.uk/bitesize/articles/zp6wfcw#z4jh3qt

How to submit

There’s no submission step. You will need these concepts in the next module.

Research Complexity using the Google DSA path ๐Ÿ”— Clone

Research Complexity using the Google DSA path ๐Ÿ”—

Learning Objectives

https://techdevguide.withgoogle.com/paths/data-structures-and-algorithms/

Learning Objectives

Why are we doing this?

Now you are moving towards working as a professional software engineer, you need to develop your research practice. How will you develop your skills after this course? How will you keep learning and growing? It is crucial that you continue your education past this very short course.

During this module, we cover a small part of data structures and algorithms. But there’s a lot more to learn. Google study paths are a useful guide, with built in quizzes and links to high quality materials. In your calendar, schedule a regular time to progress through this path over the next three months.

Tips

  • Take the quiz for each section first, to see how much you already know about the topic. If you do very well, you probably don’t need to spend a lot of time on those materials.
  • Return to topics regularly using spaced repetition scheduled in your calendar
  • Use a defined path with an end goal you can state, don’t just randomly watch videos about programming, please!

Maximum time in hours

1

How to get help

Find a study partner or group in your class. Organise to meet with each other at least once per month (or more) for the next six months (online or in person) to help each other stay accountable.

How to submit

Come to Friday demos to demo what you have learned, whenever you want. Grads are always welcome at Friday demos.

Give a demo in a demo session

Give a demo in a demo session

Presenting information is really important. You need to practice giving demos, and each week build on the feedback you got the previous week.

At CYF we expect you to demo your work to the class. You must have many opportunities to practice how to clearly and simply explain your work to others. This is really important both for interviews and for getting promoted later on.

Attend the SDC demo sessions this week during the saturday class, and give a presentation about a topic of your choosing.

Also try to give some feedback to one of your fellow trainees during this session on their demo.

Aim for a 5 minute demo. But your demo must be at least 1 minute and at most 10 minutes long. Check out our guide about presenting.

You only need to give one of these demos every two weeks. You can give extra demos in addition whenever you want more practice.

Mentored Coding (Edu Team)

Mentored Coding (Edu Team)

Learning Objectives

Mentored coding is an excellent way to develop programming and communication skills. It is often much easier to work through something when working on something 1-to-1. It is also helps you to prepare for technical interviews when you may need to code in front of other people or explain your solution to a problem.

Pick one piece of programming you’re doing (we recommend a Codewars kata) and team up with a volunteer to work on it together.

See the mentored coding guide for guidance.

Book time with your assigned education mentor for this.

Remember, as a learner, you will need to explain your thought process, plan out what to do, write the code and check it works

You will get feedback from your mentor during the session. If there are specific topics you would like to receive feedback on then let them know at the start of the session so they know what to focus on.

Optional Tasks

These are optional "stretch goals" to attempt when you have finished the mandatory tasks. They may be more challenging or require some additional research.

Codewars Fibonacci Series ๐Ÿ”— Clone

Codewars Fibonacci Series ๐Ÿ”—

Learning Objectives

https://www.codewars.com/collections/cyf-interview-prep-problems-and-sub-problems

Learning Objectives

Why are we doing this?

This is a collection of well known computer science problems that deal with complexity. Quite a lot of employers use problems like these in their technical interview process. You can practice them on Codewars, HackerRank, and LeetCode.

Maximum time in hours

0

How to get help

Join a Codewars club at CYF to practice solving these problems. You don’t have to only do Codewars problems - you can try ones on LeetCode and Hackerrank too if you like.

How to submit

No submission step. This is a stretch goal to support your research and study plan.

How to review

No response

Anything else?