Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
This is a resourceful doc for aspiring web developers and those looking to sharpen up their
skills alike.
For frontend developers looking to design landing pages, user interfaces and user
experiences, these resources will come in handy-
● CodeCademy: https://www.codecademy.com/
● Mozilla Developer Network: https://developer.mozilla.org/en-US/
● TutorialsPoint React: https://www.tutorialspoint.com/reactjs/
For backend developers looking to enhance the user’s experience with authentication,
processing data and databases-
● TutorialsPoint PHP: https://www.tutorialspoint.com/php/
● W3schools SQL: https://www.w3schools.com/sql/
● W3schools Node.js: https://www.w3schools.com/nodejs
● MongoDB Documentation: https://docs.mongodb.com/
Lastly, if you want to dive deeper into the discipline, the best thing to do is learn the basics
of Linux and the Bash terminal. Here are some resources
Resources for Design
Design consists of designing everything from logos, posters, infographics, banners, UI design
and mockups for websites and apps, to animations and interactions.
There are several programs you can use for graphic design. Adobe Photoshop and Adobe
Illustrator are two of the most popular ones, so it is recommended that you learn either one
or both of these. You might also find Sketch (on Mac) and Affinity Designer useful.
Get started with the basics:
● Introduction to Photoshop
● Introduction to Illustrator
Here are two great follow-along video courses:
● Illustrator
● Photoshop
Start designing
Good design comes with practice. It is okay to copy and recreate designs when you’re
learning. Don’t worry about being original – that will come later, once you are more
comfortable the basics. When you learn a musical instrument, you learn how to play other
people’s songs before composing your own. Same goes for design.
When you find a good design, try and recreate it. Watch tutorials if you find something you
want to replicate. You will learn best by actually making and designing stuff.
● YouTube is a great place to look for tutorials.
● Photoshop Tutorials
● Illustrator Tutorials
Design inspiration
Blogs and other sites are a great way to get inspired, browse beautiful designs, keep up with
trends and maybe even create your own portfolio. Here’s a list of places to get you started:
● Dribbble
● Behance
● This blog
Introduction to 3D Design
The Medium
We humans interpret the world around us in 3 dimensions. The goal of 3D design is, in a
nutshell, to bring a vision to life. You build up the world you envision up from the small
details, and keep adding upon.
First Steps
The software I’d recommend to use is Blender3D. Its free, open source, has good add-ons and
a helpful community, so it’s great as a starting software. Once you’ve picked it up, learning
to operate other 3D software is easy, due to common principles of the softwares. Blender also
has a well spread out feature set, so it doesn’t have much fields which it’s not good in, unlike
other 3D software.
I’d highly recommend the Blender beginner series’ by Andrew Price(BlenderGuru) and CG
Cookie, check both of them out, and follow whichever you follow through better. Their
advanced tutorials are great too.
Project Phase
Once you’ve done basics from the series, try creating something, no matter how basic, even
if its something like this.While the learning curve is steep at first, after the basics, it follows
a staircase pattern of learning from tutorials, then making.
It is a more steady path to getting better than only practicing/only seeing tutorials. A daily
dedication of ½ hour is better than a weekend commitment of 4 hours, because doing all that
practice at once doesn’t help as much, and you have much more probability of carrying it out
if its spending some time every day. Also, set time limits on projects, and follow them, no
point in stretching a project too long, since perfection is overrated.
Watching tutorials is helpful for learning various workflows, which can be applied in many
situations. Don’t simply follow the tutorial, make variations and experiment. This is crucial.
Getting critique is extremely useful, never underestimate the learning you can get from a
critique.
Art Theory
Spending some time on art theory videos can help in giving that important push which your
renders would’ve lacked before. I’d recommend Andrew Price’s series on this, with
Understanding Composition and Understanding Color. Also, learn to use the compositor and
other advanced features and post-processing effects.
General Tips
This is just a list of some must-have knowledge:
● Check out www.hdrlabs.com/sibl/archive.html for HDRIs, they satisfy most use cases
for HDRIs. Old industrial hall is especially versatile.
● Learn to use the new universal material, the Principled BSDF, it is physically accurate,
and also for color management, Filmic Blender, it helps you get great results.
● Tinker with RGB curves, math nodes, and the compositor.
● Use the new denoiser, micro displacement, and adaptive subdivision. These will save
you a LOT of time.
● Install/enable essential addons such as node wrangler, import images as planes,
BoolTool, Amaranth Toolset, Auto Render Tile Size, ANT Landscape, BLAM Blender
Camera Calibration Toolkit. There are many more useful addons, so if you run into
trouble doing some task, there’s a chance of it having an addon.
● When in doubt about some error/unexpected behavior, ask at the Blender Stack
Exchange forums.
● In many situations, you can implement workarounds to traditional methods such as
simulations, due to them requiring a lot of computing resources. As you model, you
will obtain the intuition required for this, as such work arounds can often reduce your
render times from hours to minutes!
Also, keep on persevering, it’ll take time, but you’ll start making good stuff, don’t worry
about that. Just don’t worry too much if you’re not improving drastically, just enjoy the
journey.
Inspiration
Many beginners lose motivation when doing 3D design, as they’re not making great stuff. For
this reason, I’d recommend you to check out Deviantart, blenderartists and CGstreet, and
take a screenshot of the renders which you like, and paste it in a central location, where that
be a Google Doc or Evernote file. When you’re feeling a loss of determination, just open this
file, to remember the motivation behind what you want to do.
Also, subscribe to the Sketchfab weekly digest, the models(by the community)
featured in it for that are stunning, and you can view it from different angles in real-time, in
your browser!
Enjoy!
GameDev
GamePlay:
Basically, what are the core mechanics of your game going to be? Is it shooting people randomly? a
ball that bounces around the terrain? Racing around in an open world?
Idea size:
A lot of ideas get stuck during production due to their size. If you are going to think of a open
world multiplatform RPG with AAA graphics, that idea is going to stay as just that. An idea. You
are not Valve or CD Projekt RED. Indie games are loved for their simple yet simple ideas and
gameplay.
Game engines are reusable components used to build the framework of the game.This gives
them more time to focus on the unique elements like character models, textures, how
objects interact instead of reinventing the wheel and programming the renderer or physics.
Choosing the right game engine suited to your game is important. Else you may end up
spending months to make a game which can be realised in weeks in another engine like:Unity
is best for Platformers. Unreal engine lets an indie developer create AAA graphics with no
coding whereas cryengine beats all engines if you need a shooter.
Monetizing:
You are not EA, and people would not pay you to unlock in game characters.
Start with free games and when you have built a market presence start including in app
purchases and monetizing games.
Some things to keep in mind
During the course of learning Construct and working on your projects, a few tips to produce
best results which can be kept in mind are-
● Design - A common trend amongst programmers is focusing on the code and
undermining the importance of design. Undermining of a key feature like design is
what prevents many games from breaking through to a whole different level. Have you
ever realized how many popular 2D games, although simple in function, are so
amusing? The secret to that is the simple, yet eye-catching design.
● Precision - During the development of any project, simple or complicated, precision
and awareness are the secret ingredients to success. If one slacks off during the
building of the game, a bug which appears during testing may prove to be abstruse,
simply as the person will have no idea as to what could have caused it. Moreover,
presenting of a low-quality project which lacks uniformity among objects and proper
positioning is highly embarrassing. These seemingly minute details can make or break
your project.
● Optimal Code - Optimal code is possibly the most important portion as it simplifies our
process of creating and editing a project to the nth degree. The more optimal the
code, the easier it is for us to keep track of the bugs to fix. Moreover writing optimal
code also makes it more convenient to add and edit the features of our game.
● Cleanliness - This is by far the most important point. Cleanliness is essential not only
for your Construct project but for all the other aspects of life. Keeping your code
clean makes it much easier to review by both you and others. Clean code also provides
a simple way to know the purpose of each variable or function. Moreover, easy to read
code helps a lot while finding bugs .
● Suggestions are not criticism - The feedback provided by the people interacting with
your project should be taken in a positive manner as they will be the ones playing your
game. Using the feedback from the users is a fool-proof way to improve your game.
Turing Test
Linguistics problems come in many shapes and sizes. If you are new to linguistics, we would
recommend looking at the problems presented as Fun Problems on the page of the Panini
Linguistics Olympiad: https://ltrc.iiit.ac.in/nlpmt/plo/resources.php. Once you have
completed those, you can consider moving onto the problems of the olympiad itself (note that
these are much more difficult). However, we will mostly be requiring competitors to solve
computational linguistics problems, and hence, we suggest you try those out first. Examples
of computational linguistics problems include:
1. PLO Senior 2014, Problem 6 (Encoding Trees)
https://docs.google.com/viewer?a=v&pid=sites&srcid=ZGVmYXVsdGRvbWFpbnxwYW5p
bmlsaW5ndWlzdGljc29seW1waWFkfGd4OjVkNDViYjNkMjBjYjYwMTQ
2. PLO Senior 2015, Problem 3 (Mnemonic Major System)
https://docs.google.com/viewer?a=v&pid=sites&srcid=ZGVmYXVsdGRvbWFpbnxwYW5p
bmlsaW5ndWlzdGljc29seW1waWFkfGd4OjY1MjYwOTc2MWVjOGVkMw
3. PLO Senior 2017, Problem 2 (Circles and Dots)
https://cdn.iiit.ac.in/cdn/ltrc.iiit.ac.in/nlpmt/plo/Documents/QBSPLO2017.pdf
4. PLO Senior 2018, Problem 2 (Word Embeddings)
https://cdn.iiit.ac.in/cdn/ltrc.iiit.ac.in/nlpmt/plo/Documents/QBSPLO2018.pdf
We also recommend reading about and exploring other fields of linguistics explored in the
past papers of PLO, including phonology, morphology, semantics and number systems. While
problems can come in the Turing Test paper from these fields, they would be designed so that
people without knowledge of terminology can solve them as well, and points will be given to
everyone who solves the questions, irrespective of whether they use precise linguistic
terminology or not. However, as this is often an intuition-based challenge, having a firmer
grasp of fundamental linguistics concepts is often helpful in guiding some of your guesses and
provides a better logic to understanding why something works the way it does.
Further challenges can be explored here. Note that some of these are problems from the
International Linguistics Olympiad (IOL) itself, and while they are excellent practice for
beginners trying to be better at solving problems, they are not as easy to solve as the
problems mentioned earlier.
1. Sample IOL Problems - http://www.ioling.org/problems/samples/ (Fun, but
challenging)
2. NACLO Problems - http://nacloweb.org/ (Range from very easy to very difficult at
times, do check out the problems and don’t get disheartened if you find them too
difficult at times. Despite the name being “Computational Linguistics” Olympiad, not
all problems are from computational linguistics. Used to select USA’s IOL team.)
3. UKLO Problems - http://www.uklo.org/problems (Used to select UK’s IOL team,
similar to NACLO and PLO, you will need to see which problems are computational
linguistics problems.)
4. Actual IOL Problems - http://www.ioling.org/problems/ (These are very difficult, and
are generally tackled at the end, and only after lots of practice is it possible to solve
them. However, do not let their difficulty level put you off, and we would suggest
looking at these problems and trying to solve them. Recommended computational
linguistics problems include - Telepathy (2013), mRNA Sequencing (2010), Soundex
(2015), EAN-13 (2011). However, if you get interested in linguistics competitions (we
hope you do!) after participating in Turing Test, feel free to check out the amazing
range of problems you will find here, and we recommend Transcendental Algebra
(2003), Abui (2017) and Emoji/Indonesian (2017 Team Problem) to peep inside this
fascinating world.)
Quizzing
Quizzing might seem a bit daunting at first, but when you get to a certain level, answering a
question on the stage after reading about the subject a few weeks prior can be extremely
rewarding.
To start off, you need to know what quizzing actually is: it's not a one line question with
multiple choices for the answer; it's more of a paragraph-long puzzle, where you connect
subtle hints within the question and apply your knowledge of technology to come to an
answer. It's important to know that quizzers are rarely certain of an answer, and risk-taking is
a must.
We must emphasize that you shouldn't mug up questions - that's not what quizzing is about. It
might help you in a quiz or two, but that's not what makes you a quizzer. Contrary to what
some people may think, quizzing is as much a creative skill as programming or design. A good
quiz will not only exercise your memory, but also require you to apply your critical thinking
skills to the problem. You may need to analyze a question for getting hints out of it and using
them to reach the answer.
The first step to becoming a tech quizzer, is to build a base upon which your entire quizzing
journey will lie. Basics like CEOs, founders, major tech events in history (like the Y2K bug)
and just general tech history (for example, knowledge about Fairchild Semiconductor) are a
must. They aren't asked about much in quizzes, but they give you context about the history of
technology. You may think, because they aren’t asked usually, you can skip this. But this part
will definitely help you when trying to work a question out.
Secondly, and more importantly, you have to stay up to date with what's going on in tech.
This is an integral part of what makes a good quizzer. A few tech journals that will help you
keep up are The Verge, TechCrunch and T he Next Web. If you use Facebook, you can follow
the pages for these tech journals so you see tech news in your feed, or you can use a news
app like Flipboard and follow the technology section. If you don’t have the time, during last
minute preparations, to read long articles, you could go through the technology section on
InShorts.
Just to provide clarity to this tutorial, we'll walk you through the process of figuring out the
answer to a question.
Example Question
X is a fairly intuitive company known for its witty campaigns. X has built this reputation for
themselves after repeatedly releasing hilarious ad campaigns aimed at Apple.
2014: "Once in a while, something comes along that changes the way we live, a device so
simple and intuitive, using it feels almost familiar," said Jorgen Eghammer, the "chief design
guru" in the ad for a revolutionary product from X, the bookbook. This ad campaign was
meant as a jab at Apple for the launch of the Mac.
2017: “This changes everything.” became “This charges everything.” While “Think Different.”
is now “Link Different.” in the ad campaign for the revamped wireless chargers.
What is X?
How To Work It Out
The italics are a clear indication of the keywords
When you think of the words 'company’, 'build’ and ‘themselves’, you might think of a
company which makes people build things themselves. So maybe something to do with
vehicles or furniture.
Jorgen Eghammer, while probably a fictional name, sounds quite Scandinavian.
The 2017 part in the question points towards the current events nature of the question, and
Ikea’s ad campaign in 2017 raised a lot of objections from Apple fans.
So a Scandinavian company that makes you build things yourself and recently had an ad
campaign?
There you have your answer, Ikea.
Resources for Programming
Session1:https://docs.google.com/document/d/1H1JpzvSBKMvM0VEn5JAVLZhQJEmrr9wMCK-c
p2Ad2bE/edit?usp=sharing
Session2:https://docs.google.com/document/d/1g-vaVLqVYeA9ktvC5RJYoeU6P6hhfiQZ9jt_Til
qm3g/edit?usp=sharing
http://www.iarcs.org.in/inoi/online-study-material/topics/introduction.php
Topic 1: Efficiency
http://www.iarcs.org.in/inoi/online-study-material/topics/efficiency.php
https://www.commonlounge.com/discussion/a57d4c72cfb9404ca089bb3f0e1402cf/main
Now Register an account on Codeforces.com
Go to “Contests”, and in the first 5 pages search for “Educational” (Ctrl+F). Do ALL “A”
problems in the educational rounds. There are going to be about 35, and if you think this
needs too much time, I’m afraid programming is not the sport for you. Hard Luck.
These will provide you the build up required as prerequisite to these sessions. You will be
prompted to solve more educational round problems in the middle/end of the sessions.
Topic 2: (Release on 23rd) Sorting -
http://www.iarcs.org.in/inoi/online-study-material/topics/sorting.php
a. Quicksort:
https://www.commonlounge.com/discussion/8ace3775a2e84b5db1347a4cbc9509d1/m
ain and http://www.iarcs.org.in/inoi/online-study-material/topics/quicksort.php
b. Mergesort: http://www.iarcs.org.in/inoi/online-study-material/topics/mergesort.php
and
https://www.commonlounge.com/discussion/b1f0950472c94411befbcd88bf964204/ma
in
http://www.iarcs.org.in/inoi/online-study-material/topics/stablesort.php
After this read this whole document:
https://www.topcoder.com/community/data-science/data-science-tutorials/sorting/
Homework:
Email us your own implementation of Quicksort and Mergesort to sort an inputted array
in descending order.
Topic 3: Searching - Release on 24th
http://www.iarcs.org.in/inoi/online-study-material/topics/binarysearch.php
https://www.commonlounge.com/discussion/601e95ee310545a78a429b676def547f/main
https://www.commonlounge.com/discussion/9efbe64b3fb04690abc1622b461185fd/main
After this read this whole document:
https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/
Homework:
http://www.spoj.com/problems/BSEARCH1/
www.spoj.com/problems/AGGRCOW/
Session3: Release on 25th
https://docs.google.com/presentation/d/1pxhKi-GmK0SB28B5kcFv-Gbu5mK8joaji3bbL3SGuo4
/edit?usp=sharing [LINK DELETED]
Had topics: Truth Tables, Bitwise, Intro to DP, Kadanes Algorithm
STL: 25th
https://www.topcoder.com/community/data-science/data-science-tutorials/power-up-c-wit
h-the-standard-template-library-part-1/
BITS: 25th
https://www.hackerearth.com/practice/basic-programming/bit-manipulation/basics-of-bit-m
anipulation/tutorial/
https://www.topcoder.com/community/data-science/data-science-tutorials/a-bit-of-fun-fun-
with-bits/
Session 4:
https://docs.google.com/document/d/10xFvCbVi1cWvo0P6W-iaBMmqyG1mlJvji-Dv08_sta8/ed
it?usp=sharing
Recursion: 25th
https://www.topcoder.com/community/data-science/data-science-tutorials/an-introduction-
to-recursion-part-1/
https://www.topcoder.com/community/data-science/data-science-tutorials/an-introduction-
to-recursion-part-2/
Homework:
http://codeforces.com/problemset/problem/327/A (more of kadane’s algorithm than
recursion)
https://www.hackerearth.com/practice/algorithms/greedy/basics-of-greedy-algorithms/tuto
rial/
https://www.cs.princeton.edu/~wayne/kleinberg-tardos/pdf/04GreedyAlgorithmsI.pdf
https://www.topcoder.com/community/data-science/data-science-tutorials/greedy-is-good/
Homework:
https://www.codechef.com/problems/DONUTS
https://www.codechef.com/problems/GRGUY
https://www.hackerrank.com/exun-e-lite-2017-senior-programming-semi-finals
https://www.hackerearth.com/practice/math/number-theory/basic-number-theory-1/tutoria
l/
https://www.hackerearth.com/practice/math/number-theory/basic-number-theory-2/tutoria
l/
https://www.hackerearth.com/practice/math/combinatorics/basics-of-combinatorics/tutoria
l/
http://www.geeksforgeeks.org/sieve-of-eratosthenes/
http://www.geeksforgeeks.org/sieve-eratosthenes-0n-time-complexity/
http://www.geeksforgeeks.org/least-prime-factor-of-numbers-till-n/
http://www.geeksforgeeks.org/prime-factorization-using-sieve-olog-n-multiple-queries/
https://discuss.codechef.com/questions/20451/a-tutorial-on-fast-modulo-multiplication-exponent
ial-squaring
Read for a more detailed tutorial:
http://www.topcoder.com/community/data-science/data-science-tutorials/basics-of-combinatori
Homework:
https://www.codechef.com/problems/LCKYST
https://www.codechef.com/problems/CHEFLCM
http://www.spoj.com/problems/PFACT/
https://www.codechef.com/problems/EGRCAKE
https://www.codechef.com/problems/CBALLS
https://www.codechef.com/problems/BINTOUR
https://www.codechef.com/problems/CODECRCK
https://www.codechef.com/problems/BANROB
https://www.codechef.com/problems/SETDIFF
https://www.codechef.com/problems/EGBOBRD
Here, it is CF educational problems time again. Go to CF “Contests”, Search the first 5 pages
for all educational problems, and do all “B” Problems. These should be easy to do with your
current knowledge.
https://www.youtube.com/watch?time_continue=9&v=e0CAbRVYAWg
http://www.iarcs.org.in/inoi/online-study-material/topics/dp-basics.php
http://www.iarcs.org.in/inoi/online-study-material/topics/dp-tiling.php
http://www.iarcs.org.in/inoi/online-study-material/topics/dp-grid-paths.php
tion.php
http://www.iarcs.org.in/inoi/online-study-material/topics/prefix-sums-ramus-mango-trees.p
hp
Knapsack:
http://www.geeksforgeeks.org/dynamic-programming-set-10-0-1-knapsack-problem/
http://www.geeksforgeeks.org/unbounded-knapsack-repetition-items-allowed/
Homework:
http://www.spoj.com/problems/FARIDA/
http://codeforces.com/problemset/problem/166/E
http://codeforces.com/problemset/problem/474/D
https://www.codechef.com/problems/CD1IT4
http://codeforces.com/contest/429/problem/B
http://www.spoj.com/problems/WACHOVIA/
https://www.hackerrank.com/challenges/unbounded-knapsack
http://www.spoj.com/problems/BRIDGE/
http://www.spoj.com/problems/SUPPER/
Topic 7: Stacks
https://stackoverflow.com/questions/9493853/given-an-array-find-out-the-next-smaller-elem
ent-for-each-element
Homework:
1. Implement a single code that stores for ever index the next larger, previous larger,
http://codeforces.com/problemset/problem/547/B
Intro: https://www.youtube.com/watch?v=HmQR8Xy9DeM
https://www.topcoder.com/community/data-science/data-science-tutorials/introduction-to-
graphs-and-their-data-structures-section-1/
Homework:
(Take input of user for the number of vertices, (1 to n) number of edges and then take each
edge in the form of u v w where u = initial vertex v = final vertex and w = cost. Output an
adjacency matrix with cell [u][v] having value w for all edges and the cities not directly
for each vertex from 1 to N output the list of vertices it is connected to and the
http://codeforces.com/problemset/problem/707/B
http://codeforces.com/problemset/problem/246/D
http://www.iarcs.org.in/inoi/online-study-material/topics/graphs-grids.php
https://www.topcoder.com/community/data-science/data-science-tutorials/introduction-to-
graphs-and-their-data-structures-section-2/
Homework:
http://codeforces.com/problemset/problem/540/C
http://codeforces.com/problemset/problem/377/A
http://codeforces.com/problemset/problem/115/A
http://codeforces.com/problemset/problem/580/C
http://codeforces.com/problemset/problem/431/C
Part C: DAGs and Topological Sort- 12th Explicitly not required for ZCO.
http://www.thecrazyprogrammer.com/2017/05/topological-sort.html
Homework:
http://www.spoj.com/problems/TOPOSORT/
http://codeforces.com/contest/510/problem/C
https://www.codechef.com/MAY17/problems/CHEFCODE
Homework:
https://www.codechef.com/MAY17/problems/CHEFCODE
AFTER YOU HAVE DONE EVERYTHING BEFORE THIS, DO ALL CODEFORCES EDUCATIONAL
“C” problems.
2D DP LIST:
1. Longest Palindromic Substring (All sols, N^3 N^2 N^2 with optimized Space and then N
[manachers algorithm])
2. IOIPALIN - IOI 2000. On SPOJ
3. PEG TROYANGLES - http://wcipeg.com/problem/ccc14s2p1
4.
5.