• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EST 20:43
CET 02:43
KST 10:43
  • 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
RSL Season 3 - Playoffs Preview0RSL Season 3 - RO16 Groups C & D Preview0RSL Season 3 - RO16 Groups A & B Preview2TL.net Map Contest #21: Winners12Intel X Team Liquid Seoul event: Showmatches and Meet the Pros10
Community News
Weekly Cups (Nov 24-30): MaxPax, Clem, herO win2BGE Stara Zagora 2026 announced15[BSL21] Ro.16 Group Stage (C->B->A->D)4Weekly Cups (Nov 17-23): Solar, MaxPax, Clem win3RSL Season 3: RO16 results & RO8 bracket13
StarCraft 2
General
Chinese SC2 server to reopen; live all-star event in Hangzhou Maestros of the Game: Live Finals Preview (RO4) BGE Stara Zagora 2026 announced Weekly Cups (Nov 24-30): MaxPax, Clem, herO win SC2 Proleague Discontinued; SKT, KT, SGK, CJ disband
Tourneys
RSL Offline Finals Info - Dec 13 and 14! Sparkling Tuna Cup - Weekly Open Tournament StarCraft Evolution League (SC Evo Biweekly) Sea Duckling Open (Global, Bronze-Diamond) $5,000+ WardiTV 2025 Championship
Strategy
Custom Maps
Map Editor closed ?
External Content
Mutation # 502 Negative Reinforcement Mutation # 501 Price of Progress Mutation # 500 Fright night Mutation # 499 Chilling Adaptation
Brood War
General
Foreign Brood War BW General Discussion MBCGame Torrents [ASL20] Ask the mapmakers — Drop your questions Which season is the best in ASL?
Tourneys
Small VOD Thread 2.0 [Megathread] Daily Proleagues [BSL21] RO16 Group D - Sunday 21:00 CET [BSL21] RO16 Group A - Saturday 21:00 CET
Strategy
Current Meta Game Theory for Starcraft How to stay on top of macro? PvZ map balance
Other Games
General Games
Stormgate/Frost Giant Megathread Path of Exile Nintendo Switch Thread ZeroSpace Megathread The Perfect Game
Dota 2
Official 'what is Dota anymore' discussion
League of Legends
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
Mafia Game Mode Feedback/Ideas TL Mafia Community Thread
Community
General
Russo-Ukrainian War Thread European Politico-economics QA Mega-thread US Politics Mega-thread Things Aren’t Peaceful in Palestine The Big Programming Thread
Fan Clubs
White-Ra Fan Club
Media & Entertainment
Anime Discussion Thread [Manga] One Piece Movie Discussion!
Sports
Formula 1 Discussion 2024 - 2026 Football Thread NBA General Discussion
World Cup 2022
Tech Support
Computer Build, Upgrade & Buying Resource Thread
TL Community
Where to ask questions and add stream? The Automated Ban List
Blogs
I decided to write a webnov…
DjKniteX
Physical Exertion During Gam…
TrAiDoS
James Bond movies ranking - pa…
Topin
Thanks for the RSL
Hildegard
Customize Sidebar...

Website Feedback

Closed Threads



Active: 1822 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
The PiG Daily
21:15
Best Games of SC
Clem vs Solar
Classic vs Cure
Reynor vs Classic
Solar vs Clem
PiGStarcraft593
LiquipediaDiscussion
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
PiGStarcraft593
StarCraft: Brood War
Free 128
Icarus 7
League of Legends
C9.Mang0369
JimRising 190
Super Smash Bros
Mew2King134
PPMD128
Heroes of the Storm
Khaldor134
Other Games
tarik_tv10851
summit1g8022
shahzam316
ToD154
SpeCial58
ViBE30
Organizations
Other Games
gamesdonequick1178
StarCraft 2
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
sctven
[ Show 17 non-featured ]
StarCraft 2
• Hupsaiya 105
• Berry_CruncH74
• davetesta35
• Kozan
• AfreecaTV YouTube
• intothetv
• sooper7s
• IndyKCrew
• LaughNgamezSOOP
• Migwel
StarCraft: Brood War
• RayReign 17
• Azhi_Dahaki17
• STPLYoutube
• ZZZeroYoutube
• BSLYoutube
League of Legends
• Doublelift5132
Other Games
• imaqtpie1252
Upcoming Events
Korean StarCraft League
1h 17m
CranKy Ducklings
8h 17m
WardiTV 2025
10h 17m
SC Evo League
10h 47m
IPSL
15h 17m
Dewalt vs ZZZero
BSL 21
18h 17m
Sziky vs OyAji
Gypsy vs eOnzErG
OSC
20h 17m
Solar vs Creator
ByuN vs Gerald
Percival vs Babymarine
Moja vs Krystianer
EnDerr vs ForJumy
sebesdes vs Nicoract
Sparkling Tuna Cup
1d 8h
WardiTV 2025
1d 10h
OSC
1d 13h
[ Show More ]
IPSL
1d 15h
Bonyth vs KameZerg
BSL 21
1d 18h
Bonyth vs StRyKeR
Tarson vs Dandy
Replay Cast
2 days
Wardi Open
2 days
StarCraft2.fi
2 days
Monday Night Weeklies
2 days
Replay Cast
2 days
WardiTV 2025
3 days
StarCraft2.fi
3 days
PiGosaur Monday
3 days
StarCraft2.fi
4 days
Tenacious Turtle Tussle
4 days
The PondCast
5 days
WardiTV 2025
5 days
StarCraft2.fi
5 days
WardiTV 2025
6 days
Liquipedia Results

Completed

Proleague 2025-11-30
RSL Revival: Season 3
Light HT

Ongoing

C-Race Season 1
IPSL Winter 2025-26
KCM Race Survival 2025 Season 4
YSL S2
BSL Season 21
CSCL: Masked Kings S3
Slon Tour Season 2
Acropolis #4 - TS3
WardiTV 2025
META Madness #9
SL Budapest Major 2025
ESL Impact League Season 8
BLAST Rivals Fall 2025
IEM Chengdu 2025
PGL Masters Bucharest 2025
Thunderpick World Champ.
CS Asia Championships 2025
ESL Pro League S22

Upcoming

BSL 21 Non-Korean Championship
Acropolis #4
IPSL Spring 2026
Bellum Gens Elite Stara Zagora 2026
HSC XXVIII
Big Gabe Cup #3
RSL Offline Finals
Kuram Kup
PGL Cluj-Napoca 2026
IEM Kraków 2026
BLAST Bounty Winter 2026
BLAST Bounty Winter Qual
eXTREMESLAND 2025
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 © 2025 TLnet. All Rights Reserved.