• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 06:26
CEST 12:26
KST 19:26
  • Home
  • Forum
  • Calendar
  • Streams
  • Liquipedia
  • Features
  • Store
  • EPT
  • TL+
  • StarCraft 2
  • Brood War
  • Smash
  • Heroes
  • Counter-Strike
  • Overwatch
  • Liquibet
  • Fantasy StarCraft
  • TLPD
  • StarCraft 2
  • Brood War
  • Blogs
Forum Sidebar
Events/Features
News
Featured News
Code S Season 1 - RO12 Group A: Rogue, Percival, Solar, Zoun2[ASL21] Ro8 Preview Pt1: Inheritors15[ASL21] Ro16 Preview Pt2: All Star10Team Liquid Map Contest #22 - The Finalists19[ASL21] Ro16 Preview Pt1: Fresh Flow9
Community News
2026 GSL Season 1 Qualifiers24Maestros of the Game 2 announced92026 GSL Tour plans announced15Weekly Cups (April 6-12): herO doubles, "Villains" prevail1MaNa leaves Team Liquid25
StarCraft 2
General
Code S Season 1 - RO12 Group A: Rogue, Percival, Solar, Zoun Blizzard Classic Cup @ BlizzCon 2026 - $100k prize pool Team Liquid Map Contest #22 - The Finalists MaNa leaves Team Liquid Maestros of the Game 2 announced
Tourneys
2026 GSL Season 1 Qualifiers Sparkling Tuna Cup - Weekly Open Tournament INu's Battles#14 <BO.9 2Matches> GSL CK: More events planned pending crowdfunding RSL Revival: Season 5 - Qualifiers and Main Event
Strategy
Custom Maps
[D]RTS in all its shapes and glory <3 [A] Nemrods 1/4 players [M] (2) Frigid Storage
External Content
The PondCast: SC2 News & Results Mutation # 523 Firewall Mutation # 522 Flip My Base Mutation # 521 Memorable Boss
Brood War
General
ASL21 General Discussion BW General Discussion Leta's ASL S21 Ro.16 review [ASL21] Ro8 Preview Pt1: Inheritors BGH Auto Balance -> http://bghmmr.eu/
Tourneys
[ASL21] Ro8 Day 2 [ASL21] Ro8 Day 1 [Megathread] Daily Proleagues [ASL21] Ro16 Group D
Strategy
Fighting Spirit mining rates Simple Questions, Simple Answers What's the deal with APM & what's its true value Any training maps people recommend?
Other Games
General Games
Stormgate/Frost Giant Megathread Dawn of War IV Diablo IV Nintendo Switch Thread Total Annihilation Server - TAForever
Dota 2
The Story of Wings Gaming
League of Legends
G2 just beat GenG in First stand
Heroes of the Storm
Simple Questions, Simple Answers Heroes of the Storm 2.0
Hearthstone
Deck construction bug Heroes of StarCraft mini-set
TL Mafia
Vanilla Mini Mafia Mafia Game Mode Feedback/Ideas TL Mafia Community Thread Five o'clock TL Mafia
Community
General
US Politics Mega-thread Russo-Ukrainian War Thread 3D technology/software discussion European Politico-economics QA Mega-thread Canadian Politics Mega-thread
Fan Clubs
The IdrA Fan Club
Media & Entertainment
Anime Discussion Thread [Manga] One Piece [Req][Books] Good Fantasy/SciFi books Movie Discussion!
Sports
2024 - 2026 Football Thread Formula 1 Discussion McBoner: A hockey love story
World Cup 2022
Tech Support
streaming software Strange computer issues (software) [G] How to Block Livestream Ads
TL Community
The Automated Ban List
Blogs
Sexual Health Of Gamers
TrAiDoS
lurker extra damage testi…
StaticNine
Broowar part 2
qwaykee
Funny Nicknames
LUCKY_NOOB
Iranian anarchists: organize…
XenOsky
Customize Sidebar...

Website Feedback

Closed Threads



Active: 1923 users

Chemistry Olympiad and Computer Programming

Blogs > XXGeneration
Post a Reply
1 2 Next All
XXGeneration
Profile Blog Joined November 2010
United States625 Posts
Last Edited: 2011-06-25 01:22:23
June 25 2011 01:10 GMT
#1
Hey Teamliquid,

This is my first blog post, so forgive me if I'm not conforming to any rules in the blog section.

My first question is about the US Chemistry Olympiad tests. Has anyone on Teamliquid ever studied for the tests in an attempt to qualify for the team? If so, I'm wondering how I should be going about preparing for this and if there's anything I should know. My school district is highly competitive (one of the two high schools in my district alone had 13 people accepted into Princeton this year), and only two people per school are invited to take the national exam every year, which sorta makes me nervous heh .

I'm just going into 9th grade and I've studied chemistry from textbooks that my brother had when he was in high school. I've also taken the year 2000 and 2001 local exams for this test, scoring a 39 and a 45 respectively. Now I'm going through this large book from Schaum's, consisting of "3000 solved problems in Chemistry" in an attempt to "mass-problems".

Any advice is much appreciated.


Because I have so much time this summer aside from studying chemistry and doing the various schoolwork, I would like to learn computer programming. Browsing through old threads in TL I found out about the IOI, the International Olympiad in Informatics. Because I always had an interest in computer programming but never thought it would have much use, I sort of put it off. Now, however, it seems like the time is right to learn something, and programming seems to fit the bill.

My question is, how should I go about learning programming?

My brother took computer science courses for two years in college, and he has always tried to get me to learn some programming. When I asked him about it yesterday about which language I should start off in, he recommended I partition my hard drive and dual-boot Linux and learn C, so that I can eventually convert to C++. Another option is to learn programming with Java. Which would be a better choice? Keep in mind I have 2-5 hours a day I could put into learning programming.

After I choose a language, I honestly have no clue how I'm going to go about learning it. Should I look for books, or should I just use online tutorials?


Thank you for your time and answers!

Edit: Bolded some parts that are the most important if you're just skimming lol
Edit2: In retrospect it probably would've been smarter to make the title "Computer Programming and Chemistry Olympiad" considering the demographic of people on Teamliquid

*
"I was so surprised when I first played StarCraft 2. I couldn't believe that such an easy game exists... I guess the best way to attract people these days is to make things easy and simple." -Midas
EtherealDeath
Profile Blog Joined July 2007
United States8366 Posts
June 25 2011 01:27 GMT
#2
Learn programming by making random projects for yourself and learning along the way.

Books for background/basis until you are familiarish with things, then books for side reading and google to guide the way.

Screw C. Learn Java or C#. Learn Python, PHP, or Ruby for scripting as well, Python if you give no shits about making websites (people tend to use PHP/Ruby for that). Or, if you are a WoW whore and want to make addons too, use Lua.
Oracle
Profile Blog Joined May 2007
Canada411 Posts
June 25 2011 01:29 GMT
#3
If you want to be an implementation jockey and just create cool programs and stuff learn Java or C#, the easier languages.

If you care about theory (algorithms, turing machines, automatas, math, problem solving) go to school for it or watch MIT open courseware.
Eti307
Profile Blog Joined March 2004
Canada3442 Posts
June 25 2011 01:57 GMT
#4
My brother took computer science courses for two years in college, and he has always tried to get me to learn some programming. When I asked him about it yesterday about which language I should start off in, he recommended I partition my hard drive and dual-boot Linux and learn C, so that I can eventually convert to C++.


that's really bad advice... you don't need linux to learn programming and learning C is not a good idea. If it's only recreational C# or Java is your best bet, if you want to do more complex stuff,learn memory management etc. learn C++
Yukidasu
Profile Blog Joined September 2009
Australia125 Posts
Last Edited: 2011-06-25 01:59:46
June 25 2011 01:58 GMT
#5
I've been to the ACM world finals and done heaps of other IOI type competitions.

If you're going into competitive programming you want to learn C. C++ has some useful additions that eventually make things easier, but you don't need them right away. Java is also ok but it's a slight disadvantage due to speed, it's not as easy to do simple things like input, and it's fairly similar to C anyway. Other languages are generally not allowed in competitions.

Learning Linux is good, you could also install cygwin and get the linux shell + compilers from windows without having to reboot or stuff around with partitions. It's good to learn with the whole thing though. Alternatively, Dev-c++ is decent and easy to set up.

Good luck!
Lost in a groundless dream. You can't fly if there's nowhere to fall.
huameng
Profile Blog Joined April 2007
United States1133 Posts
June 25 2011 02:00 GMT
#6
If you want to do IOI I think C++ is your only (reasonable) option. Only c++, c, and pascal are allowed as far as I know, although I've only read about it.
skating
XXGeneration
Profile Blog Joined November 2010
United States625 Posts
June 25 2011 02:07 GMT
#7
On June 25 2011 10:58 Yukidasu wrote:
I've been to the ACM world finals and done heaps of other IOI type competitions.

If you're going into competitive programming you want to learn C. C++ has some useful additions that eventually make things easier, but you don't need them right away. Java is also ok but it's a slight disadvantage due to speed, it's not as easy to do simple things like input, and it's fairly similar to C anyway. Other languages are generally not allowed in competitions.

Learning Linux is good, you could also install cygwin and get the linux shell + compilers from windows without having to reboot or stuff around with partitions. It's good to learn with the whole thing though. Alternatively, Dev-c++ is decent and easy to set up.

Good luck!


How do you propose I learn C? Should I find books?
"I was so surprised when I first played StarCraft 2. I couldn't believe that such an easy game exists... I guess the best way to attract people these days is to make things easy and simple." -Midas
oxidized
Profile Blog Joined January 2009
United States324 Posts
June 25 2011 02:17 GMT
#8
I took the chem olympiad one time like seven years ago. I don't remember specifics, but I remember nothing being out of reach for an AP chem student. Basically if you know your chemistry, you should be fine. The best way to practice for this type of test is to take a bunch of practice tests and study up on your weaknesses.

Because it's the chem olympiad, there's going to be some random knowledge questions which you cannot rely on always knowing the answer to. The best way to go about those is to make an educated guess based on periodic trends, etc. (Don't remember if they penalize for wrong answers).

Good luck

On June 25 2011 10:27 EtherealDeath wrote:
Learn programming by making random projects for yourself and learning along the way.

This is pretty much what you should do. I learned programming by making programs to do my math homework for me. Obviously go through a couple tutorials for basics, but then you should have a goal for each project (like automate a solution to a math problem) - and then solve it. You can't learn without doing random programming projects.
Chimpalimp
Profile Joined May 2010
United States1135 Posts
Last Edited: 2011-06-25 02:29:46
June 25 2011 02:28 GMT
#9
I have learned C++ (By learned, I mean I've programmed with C++ for about a year. But you never really fully learn a language) and I would definitely recommend it, its a great language to start with as it lets you touch on a little of everything, and is fairly useful to know overall. C is also a good language to know, but its a bit of a pain. As for learning C or C++, a textbook wouldn't be a bad idea, but I don't think its totally necessary. A textbook is great to have for reference, but the internet is a much more useful tool. I would recommend trying out the MIT open coursework, and finding a decent professor's online notes. Those would be good staples to learn whats going on, and then use online references such as cplusplus.com.

Programming is a cool subject because everything you learn, you can actually do, and put it to good use. Thus the best way to learn programming, is to program. Just find a bunch of projects a professor posted online, and try it out.

As for using linux just to learn programming, while it is useful, I don't think its totally necessary. You won't really tap into the advantages of linux until you are an experienced programmer, windows or mac os will do fine until then.
I like money. You like money too? We should hang out.
blankspace
Profile Blog Joined June 2010
United States292 Posts
June 25 2011 02:33 GMT
#10
Wow if you're starting on chemistry this early, surely you'll be able to make the top four team in two years or even next year (not that many people compete in chem). From what I've heard, just work through some good textbooks carefully.

For IOI, I never did it but I think you need to learn graph theory and algorithms.
Hello friends
Yukidasu
Profile Blog Joined September 2009
Australia125 Posts
Last Edited: 2011-06-25 02:36:45
June 25 2011 02:35 GMT
#11
On June 25 2011 11:07 XXGeneration wrote:How do you propose I learn C? Should I find books?


It depends. If you haven't programmed much before, a lot of what you'll learn is how to think about things formally, which applies to any language. You'll learn that with any good book, but I'd recommend learning with specific goals (I want to solve this problem!). I'd say get on to train.usaco.org as soon as you know the basics and just work on things. You can probably find basic tutorials online.

Feel free to pm me if there's anything specific you want to ask

edit: Chimpalimp makes some great suggestions.
Lost in a groundless dream. You can't fly if there's nowhere to fall.
SleepTech
Profile Blog Joined December 2010
United States222 Posts
June 25 2011 03:23 GMT
#12
I learned C and C++ by messing around with text games, or Multi-User Dungeons (MUDs). I pretty much just taught myself, although I don't know if I would suggest this in that most of the text games out today probably aren't the best written forms and you'll probably learn bad habits. I've been programming on a game since 2004, but it's definitely fun and interesting.

But for me, it's all recreational, I never meant for it to be a job, just a hobby.

I'm not sure what your wants are for it.
Incanus
Profile Joined October 2009
Canada695 Posts
Last Edited: 2011-06-25 03:49:25
June 25 2011 03:44 GMT
#13
If you're going to learn from in an unstructured setting, C and C++ would be horrible choices. It's ridiculously common to come across bad practices in these languages, and unless you have a guide attempting to learn them will only hinder your programming knowledge. Besides, they are both uninspiring languages to beginners (apart from the fact that so many popular programs are written using them).

Java would be a significantly better language to learn. Speed is not an issue because:
1) Java is nearly as fast (and faster in certain cases) as C++.
2) Java is safer than C and C++, which makes speedy debugging (ie. within time limited contests) more doable.
3) In programming contests, it's often only the asymptotic behaviour (or at least some large constant based on your algorithm's implementation) that matters.

Better than Java, would be to learn Python, which is more likely to be benefitial to your programming skills. It is also great for writing contests with more flexible math functions and rapid prototyping. There exists a great knowledge base for it as well.
Flash: "Why am I so good?" *sob sob*
affinity
Profile Blog Joined October 2007
United States266 Posts
June 25 2011 03:53 GMT
#14
Google has great courses on Python and C++
http://code.google.com/edu/languages/index.html

2-5 hours is more than enough to learn programming, but IMO learning a language because of a project you have in mind > learning the language just for kicks.
Vinnesta
Profile Blog Joined April 2010
Singapore285 Posts
Last Edited: 2011-06-25 04:14:40
June 25 2011 04:11 GMT
#15
Not to intentionally be a wet blanket, but casually learning computer programming with the hopes of entering IOI is a far-fetched dream. IIRC, only high school students are allowed to enter the IOI, which gives you 3 or 4(?) years to fully master programming AND learn advanced mathematics (relative to high school standards). Among my friends, the only ones who got into IOI were those who had intensively studied programming and mathematics for about 4 to 5 years before getting a chance to enter the Olympiad. Thus, unless you are a genius with IQ of over 180 or something, choose either the chemistry or informatics Olympiad, and dedicate yourself to it fully.

As others have already said, C++ is the most universally accepted algorithmic language at this level. It may help to have some experience with C, but learning C++ from the get-go shouldn't be a problem. However, remember that the programming language is only a tool to process your ideas. What distinguishes mediocre programmers from the best is their problem-solving ability. Ultimately, IOI is a test of your mathematical and logical skills in solving questions. Fluency with programming language can improve your efficiency and allow you to write a more elegant solution, but without the ability to solve questions, programming skills are useless. For example, look at these past paper questions:

Flood (IOI 07)
Sails (IOI 07)

There is almost no aspect of programming being tested in the problem, and an intelligent person without any experience in programming could probably solve it. If you still want to participate in an informatics competition after all that I've blabbered on about, good luck and remember to hone your problem solving skills (try doing those two examples!)
Same difference is not an oxymoron!
roflpie
Profile Blog Joined April 2010
Estonia93 Posts
June 25 2011 04:51 GMT
#16
Don't you be a pussy and start with Python or Java, that hide the more complex stuff from you. Starting with C and moving on to C++ will help you understand computers better and once you know C++, you can pick up most of the other languages easily. You could start straight with C++ aswell, there's a great free book with sample code: "Thinking in C++" by Bruce Eckel. http://mindview.net/Books/TICPP/ThinkingInCPP2e.html
igotmyown
Profile Blog Joined April 2009
United States4291 Posts
June 25 2011 05:04 GMT
#17
If you're completely on top of everything you can learn in AP chemistry, most of the Chemistry Olympiad shouldn't be a problem. If you know everything, you'll get every problem right (right?) Then again, if you you don't get some of the stuff, you shouldn't be taking it.

They do have some content that is not in AP chemistry (maybe 5%). That includes some Organic Chemistry and something else, which I thought was kind of unfair... But you can still do well enough.

In my opinion, the hard part of making the team is the lab portions in the later rounds.
v3ctor
Profile Joined May 2011
Canada53 Posts
June 25 2011 05:13 GMT
#18
On June 25 2011 13:11 Vinnesta wrote:
There is almost no aspect of programming being tested in the problem, and an intelligent person without any experience in programming could probably solve it. If you still want to participate in an informatics competition after all that I've blabbered on about, good luck and remember to hone your problem solving skills (try doing those two examples!)


That's not completely true, the sails problem requires use of some fairly complex data structures if you want to solve it completely (with their time/memory limits) In general, for these competitions there's a repertoire of algorithms that you'll need to learn and remember - and more importantly, remember how to code within the contest time. So although the code required isn't complex from a language feature point of view, it's still pretty intricate and requires a fair amount of practice.

Most IOI problems can be solved with less than 100 lines of code, so yes, programming skill is definitely not the limiting factor. If you're serious about practicing for these competitions, it's essential to practice all the various types of problems that can show up - a poster above mentioned train.usaco.org, and that's probably the best place to go first. You should try some of those problems and see if you're still interested before pursuing it any further (as it really takes a lot of dedication and practice if you want to qualify, especially for the US team)
Servius_Fulvius
Profile Joined August 2009
United States947 Posts
June 25 2011 05:43 GMT
#19
On June 25 2011 10:10 XXGeneration wrote:
I'm just going into 9th grade and I've studied chemistry from textbooks that my brother had when he was in high school. I've also taken the year 2000 and 2001 local exams for this test, scoring a 39 and a 45 respectively. Now I'm going through this large book from Schaum's, consisting of "3000 solved problems in Chemistry" in an attempt to "mass-problems".

Any advice is much appreciated.


That's a LOT of solved problems. I'm not sure if "solved" problems should be the ones you're looking for. Yeah, you can check your work and see if it's right, but you gain no confidence in solving a problem when you can't check and see if it's right. It's much more valuable to learn how to think, so if you MUST used the solved problems make sure you do a bunch of them and talk over the theory and problem-solving before you check your work.
Incanus
Profile Joined October 2009
Canada695 Posts
June 25 2011 06:56 GMT
#20
On June 25 2011 13:51 roflpie wrote:
Don't you be a pussy and start with Python or Java, that hide the more complex stuff from you. Starting with C and moving on to C++ will help you understand computers better and once you know C++, you can pick up most of the other languages easily. You could start straight with C++ aswell, there's a great free book with sample code: "Thinking in C++" by Bruce Eckel. http://mindview.net/Books/TICPP/ThinkingInCPP2e.html

Typical of beginner C++ programmers to think that complexity is a measure of the depth of a language. You don't gain nearly as much understanding (of computers, algorithms, or programming) by learning the 50000 quirks of your language as you would by learning 2 or 3 vastly different (and simpler, more elegant) languages or by studying a good algorithms book.
Flash: "Why am I so good?" *sob sob*
1 2 Next All
Please log in or register to reply.
Live Events Refresh
Afreeca Starleague
10:00
Ro8 Match 2
Leta vs YSC
Afreeca ASL 13959
StarCastTV_EN430
Liquipedia
Replay Cast
09:00
KungFu Cup 2026 Week 5
CranKy Ducklings110
LiquipediaDiscussion
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
OGKoka 238
ProTech130
SortOf 104
StarCraft: Brood War
Calm 12319
Jaedong 4044
BeSt 1773
Horang2 1355
EffOrt 765
Mini 690
Hyuk 517
firebathero 384
Stork 373
Zeus 293
[ Show more ]
Light 289
actioN 276
Larva 209
Soma 167
PianO 149
ZerO 113
Rush 96
ToSsGirL 95
Dewaltoss 85
Killer 49
ggaemo 48
NaDa 41
sSak 33
Barracks 31
JulyZerg 30
Sexy 25
yabsab 24
Shinee 23
soO 19
HiyA 18
Free 17
Terrorterran 16
Movie 15
GoRush 10
ajuk12(nOOB) 9
Sacsri 7
SilentControl 7
[sc1f]eonzerg 1
NotJumperer 1
Dota 2
XaKoH 475
NeuroSwarm407
XcaliburYe80
ODPixel36
League of Legends
JimRising 407
Counter-Strike
olofmeister2339
shoxiejesuss1317
Other Games
singsing1204
crisheroes182
Lowko157
Livibee47
Organizations
Other Games
gamesdonequick546
StarCraft: Brood War
UltimateBattle 223
Dota 2
PGL Dota 2 - Main Stream174
StarCraft 2
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
[ Show 16 non-featured ]
StarCraft 2
• CranKy Ducklings SOOP4
• intothetv
• AfreecaTV YouTube
• Kozan
• IndyKCrew
• LaughNgamezSOOP
• Migwel
• sooper7s
StarCraft: Brood War
• iopq 3
• BSLYoutube
• STPLYoutube
• ZZZeroYoutube
Dota 2
• lizZardDota244
League of Legends
• TFBlade1278
• Stunt491
Other Games
• WagamamaTV186
Upcoming Events
Kung Fu Cup
34m
GSL
23h 4m
Rogue vs Percival
Zoun vs Solar
Replay Cast
1d 13h
GSL
1d 23h
Cure vs TriGGeR
ByuN vs Bunny
The PondCast
1d 23h
KCM Race Survival
1d 23h
Replay Cast
2 days
Replay Cast
2 days
Escore
2 days
OSC
3 days
[ Show More ]
Replay Cast
3 days
Replay Cast
3 days
IPSL
4 days
Ret vs Art_Of_Turtle
Radley vs TBD
BSL
4 days
Replay Cast
4 days
uThermal 2v2 Circuit
5 days
BSL
5 days
IPSL
5 days
eOnzErG vs TBD
G5 vs Nesh
Replay Cast
5 days
Wardi Open
5 days
Afreeca Starleague
5 days
Jaedong vs Light
Monday Night Weeklies
6 days
Replay Cast
6 days
Sparkling Tuna Cup
6 days
Afreeca Starleague
6 days
Snow vs Flash
Liquipedia Results

Completed

Escore Tournament S2: W4
WardiTV TLMC #16
Nations Cup 2026

Ongoing

BSL Season 22
ASL Season 21
CSL 2026 SPRING (S20)
IPSL Spring 2026
KCM Race Survival 2026 Season 2
StarCraft2 Community Team League 2026 Spring
IEM Rio 2026
PGL Bucharest 2026
Stake Ranked Episode 1
BLAST Open Spring 2026
ESL Pro League S23 Finals
ESL Pro League S23 Stage 1&2
PGL Cluj-Napoca 2026

Upcoming

Escore Tournament S2: W5
KK 2v2 League Season 1
Acropolis #4
BSL 22 Non-Korean Championship
CSLAN 4
Kung Fu Cup 2026 Grand Finals
HSC XXIX
uThermal 2v2 2026 Main Event
Maestros of the Game 2
2026 GSL S2
RSL Revival: Season 5
2026 GSL S1
XSE Pro League 2026
IEM Cologne Major 2026
Stake Ranked Episode 2
CS Asia Championships 2026
Asian Champions League 2026
IEM Atlanta 2026
PGL Astana 2026
BLAST Rivals Spring 2026
TLPD

1. ByuN
2. TY
3. Dark
4. Solar
5. Stats
6. Nerchio
7. sOs
8. soO
9. INnoVation
10. Elazer
1. Rain
2. Flash
3. EffOrt
4. Last
5. Bisu
6. Soulkey
7. Mini
8. Sharp
Sidebar Settings...

Advertising | Privacy Policy | Terms Of Use | Contact Us

Original banner artwork: Jim Warren
The contents of this webpage are copyright © 2026 TLnet. All Rights Reserved.