1. Limited time only! Sign up for a free 30min personal tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Sophomore in High School Looking For Advice

  1. Jan 30, 2008 #1
    As the title says I'm a sophomore in high school (15 years old) and I absolutely love theoretical physics, math (as a whole) and computer programming. I've begun learning C/C++ by myself and am completely enthralled with it.

    I'm currently in a chem I class and an algebra II class, where we're working on functions and such. Next year I plan on taking physical science I, chem II, trig I and special computers II (where I'm teaching myself C currently.) Senior year I would take a physics course at our local community college, college algebra or calculus class, special computers III (where I would be a tech at the elementary school).

    What I'm getting at is; what are books, classes and additional things I could read/do to further my knowledge of these subjects...I'm undecided on what I want to do when I "grow up" but I would love to do something involving these things.
    Last edited: Jan 30, 2008
  2. jcsd
  3. Jan 31, 2008 #2
    As a computer science student, I can advise you to expand your knowledge about algorithms and data structures. They are really really important in computer science and someone who knows about algorithms, data structures and complexity really is a better programmer than someone who's not. Also they lay the basis for about any other course in computer science.
    A book I would recommend to you is "Introduction by Algorithms" by Cormen, Leiserson, Rivest and Stein. It's THE classic book on algorithms and data structures. Some parts are tricky, and meant for graduate students, but you can easily skip them without any consequences for further reading. You can easily identify those chapters as they are marked with a star. There are also exercises at the end of each chapter which makes it adequate for self-study.
    What I also like about this book is that the chapters are rather independent. It's not at all that if you haven't read chapter n then you wouldn't understand chapter (n+1), except for the first 5 chapters that are rather introductory and are a mathematical basis for the whole book.
    Of course, you must keep in mind that it is written at undergraduate level. The mathematics isn't difficult but do require a certain level of abstraction in order to be fully understood. So if you are really motivated and good at mathematics, reading this would be an enormous enrichment for you.
  4. Jan 31, 2008 #3


    User Avatar

    My take on things, which is of course subject to error.


    www.artofproblemsolving.com -- the forums can be very fun and informative

    Learning elementary high school math and problem-solving is important. Don't poo-poo the geometry and algebra you learn in your classes; if you ever take high school math contests it will come back to haunt you. Also it's good to get ahead and learn precalc+calc rigorously. For Calculus, Apostol and Spivak are classic choices of textbooks.

    Some cool eye-openers that don't require a lot of background are cardinal numbers and Dedekind cuts.

    Also, I think it would be very beneficial to see and understand and write mathematical proofs.

    A really good book for problem-solving as well as proofwriting: The Art and Craft of Problem Solving by Paul Zeitz

    There's also the books Art of Problem Solving Volume 1+2 from theartofproblemsolving.com

    These three books that I just mentioned would probably be the most beneficial out of all the things I have recommended, along with the website.


    Feynman's Lectures would be a good choice of books.


    It's good that you're learning C++, as it's probably the hardest language to learn, except for maybe assembly. It also gives you a better sense of computer architecture than Java. If C++ is the first girl you've had sex with, then you'll always remember her.

    The transition to higher-level OOP languages like Java and C# is also a good idea and it's also important to be able to make this transition. If you decide to learn Java, then Sun's Java forums are very helpful.

    Then if you wanted to you can delve into assembly, which you can do inline through C++ or external to it. If you're a Windows guy I'd recommend MASM, otherwise NASM.

    Comp Sci

    Learn OOP, Data Structures, Algorithms, Big O and Complexity, and maybe Design Patterns (these can be real enlightening though there's a danger of getting too obsessed with them to the point of detriment).

    May also want to experiment with Linux.

    And of course, be aware of whether your extracurricular studies are interfering with school.
    Last edited: Jan 31, 2008
  5. Jan 31, 2008 #4
    Apostol and Spivak may be a little much for a high school student. But then again, what do I know. If you do take calculus in high school, just make sure you understand it as much as you can. Speaking from experience, if you come into college whether it be for physics, math, comp sci or any other science, and you have already taken calc 1 or maybe even calc 2, then you are already ahead. Generally the first math class for science majors is calc 1. You can retake it and breeze through it, while getting better at the in depth parts you may not have covered, like some proofs, or you can skip it and move on to the harder maths. Either way works fine, it depends on your own schedule. Later in math course you may wish you had started over at calc 1, maybe you can't remember the proof for mean value theorem while you are taking real analysis so that class is a tad bit harder, but it shouldn't be a problem.

    I would also recommend that you expand beyond the horizon of C and C++, yes they are widely used, you may even find yourself using root at some point for computer simulation in particle physics, but it would be good to work with an OO language like Java for some time. And I know you can do OO with C++ but learning a new language give you a lot of versatility. You could look into python as well, it tend to be snappy for math calculations, but I found it harder to delve into than I did java.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook