• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 07:06
CEST 13:06
KST 20:06
  • 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
[ASL20] Ro24 Preview Pt1: Runway132v2 & SC: Evo Complete: Weekend Double Feature4Team Liquid Map Contest #21 - Presented by Monster Energy9uThermal's 2v2 Tour: $15,000 Main Event18Serral wins EWC 202549
Community News
Maestros of The Game—$20k event w/ live finals in Paris21Weekly Cups (Aug 11-17): MaxPax triples again!13Weekly Cups (Aug 4-10): MaxPax wins a triple6SC2's Safe House 2 - October 18 & 195Weekly Cups (Jul 28-Aug 3): herO doubles up6
StarCraft 2
General
What mix of new and old maps do you want in the next 1v1 ladder pool? (SC2) : 2v2 & SC: Evo Complete: Weekend Double Feature Geoff 'iNcontroL' Robinson has passed away The GOAT ranking of GOAT rankings RSL Revival patreon money discussion thread
Tourneys
Maestros of The Game—$20k event w/ live finals in Paris Sparkling Tuna Cup - Weekly Open Tournament RSL: Revival, a new crowdfunded tournament series Monday Nights Weeklies Master Swan Open (Global Bronze-Master 2)
Strategy
Custom Maps
External Content
Mutation # 487 Think Fast Mutation # 486 Watch the Skies Mutation # 485 Death from Below Mutation # 484 Magnetic Pull
Brood War
General
Joined effort Flash On His 2010 "God" Form, Mind Games, vs JD New season has just come in ladder BW General Discussion Flash Announces (and Retracts) Hiatus From ASL
Tourneys
[ASL20] Ro24 Group B [ASL20] Ro24 Group C BWCL Season 63 Announcement [CSLPRO] It's CSLAN Season! - Last Chance
Strategy
Simple Questions, Simple Answers Fighting Spirit mining rates [G] Mineral Boosting Muta micro map competition
Other Games
General Games
Nintendo Switch Thread General RTS Discussion Thread Dawn of War IV Path of Exile Stormgate/Frost Giant Megathread
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
Heroes of StarCraft mini-set
TL Mafia
TL Mafia Community Thread Vanilla Mini Mafia
Community
General
Russo-Ukrainian War Thread US Politics Mega-thread The year 2050 Things Aren’t Peaceful in Palestine European Politico-economics QA Mega-thread
Fan Clubs
INnoVation Fan Club SKT1 Classic Fan Club!
Media & Entertainment
Anime Discussion Thread Movie Discussion! [Manga] One Piece [\m/] Heavy Metal Thread
Sports
2024 - 2026 Football Thread TeamLiquid Health and Fitness Initiative For 2023 Formula 1 Discussion
World Cup 2022
Tech Support
High temperatures on bridge(s) Gtx660 graphics card replacement Installation of Windows 10 suck at "just a moment"
TL Community
The Automated Ban List TeamLiquid Team Shirt On Sale
Blogs
Evil Gacha Games and the…
ffswowsucks
Breaking the Meta: Non-Stand…
TrAiDoS
INDEPENDIENTE LA CTM
XenOsky
[Girl blog} My fema…
artosisisthebest
Sharpening the Filtration…
frozenclaw
ASL S20 English Commentary…
namkraft
Customize Sidebar...

Website Feedback

Closed Threads



Active: 2454 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
WardiTV Summer Champion…
11:00
Playoffs Day 1
ByuN vs herO
MaxPax vs Zoun
Clem vs NightMare
Liquipedia
Sparkling Tuna Cup
10:00
Weekly #103
TBD vs ShoWTimE
CranKy Ducklings119
LiquipediaDiscussion
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
RotterdaM 166
MindelVK 62
Rex 39
StarCraft: Brood War
Sea 5672
Killer 889
Larva 657
PianO 500
Pusan 469
Hyun 457
ggaemo 300
Mini 284
firebathero 222
Hyuk 222
[ Show more ]
Last 198
Soma 181
Rush 120
Britney 112
NaDa 28
soO 28
Free 28
Noble 19
NotJumperer 16
HiyA 10
Icarus 2
Dota 2
XcaliburYe745
Fuzer 120
febbydoto26
League of Legends
Dendi880
JimRising 350
Counter-Strike
summit1g8089
olofmeister1704
x6flipin298
Super Smash Bros
Mew2King59
Heroes of the Storm
Khaldor202
Other Games
singsing2158
Happy325
B2W.Neo252
SortOf154
rGuardiaN39
Organizations
StarCraft 2
WardiTV193
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
sctven
[ Show 12 non-featured ]
StarCraft 2
• Reevou 12
• AfreecaTV YouTube
• intothetv
• Kozan
• IndyKCrew
• LaughNgamezSOOP
• Migwel
• sooper7s
StarCraft: Brood War
• BSLYoutube
• STPLYoutube
• ZZZeroYoutube
League of Legends
• Jankos2014
Upcoming Events
SC Evo League
54m
Chat StarLeague
4h 54m
Razz vs Julia
StRyKeR vs ZZZero
Semih vs TBD
Replay Cast
12h 54m
Afreeca Starleague
22h 54m
Queen vs HyuN
EffOrt vs Calm
Wardi Open
23h 54m
RotterdaM Event
1d 3h
Replay Cast
1d 12h
Afreeca Starleague
1d 22h
Rush vs TBD
Jaedong vs Mong
WardiTV Summer Champion…
1d 23h
PiGosaur Monday
2 days
[ Show More ]
Afreeca Starleague
2 days
herO vs TBD
Royal vs Barracks
Replay Cast
3 days
The PondCast
3 days
WardiTV Summer Champion…
3 days
Replay Cast
4 days
LiuLi Cup
4 days
Cosmonarchy
5 days
OyAji vs Sziky
Sziky vs WolFix
WolFix vs OyAji
BSL Team Wars
5 days
Team Hawk vs Team Dewalt
BSL Team Wars
5 days
Team Hawk vs Team Bonyth
SC Evo League
6 days
[BSL 2025] Weekly
6 days
Liquipedia Results

Completed

Jiahua Invitational
uThermal 2v2 Main Event
HCC Europe

Ongoing

Copa Latinoamericana 4
BSL 20 Team Wars
KCM Race Survival 2025 Season 3
BSL 21 Qualifiers
ASL Season 20
CSL Season 18: Qualifier 1
Acropolis #4 - TS1
CSLAN 3
SEL Season 2 Championship
WardiTV Summer 2025
Esports World Cup 2025
BLAST Bounty Fall 2025
BLAST Bounty Fall Qual
IEM Cologne 2025
FISSURE Playground #1
BLAST.tv Austin Major 2025

Upcoming

CSL Season 18: Qualifier 2
CSL 2025 AUTUMN (S18)
LASL Season 20
BSL Season 21
BSL 21 Team A
Chzzk MurlocKing SC1 vs SC2 Cup #2
RSL Revival: Season 2
Maestros of the Game
EC S1
Sisters' Call Cup
IEM Chengdu 2025
PGL Masters Bucharest 2025
MESA Nomadic Masters Fall
Thunderpick World Champ.
CS Asia Championships 2025
Roobet Cup 2025
ESL Pro League S22
StarSeries Fall 2025
FISSURE Playground #2
BLAST Open Fall 2025
BLAST Open Fall Qual
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.