<p>Sophomore Schedule</p>
<p>Ap Biology
Ap European History</p>
<p>Ap Psych or Ap Comp Sci</p>
<p>Tennis Team
H Precalc
H eng 10
Span 2</p>
<p>So, Ap Psych or Ap Comp Sci, i am equally interested in both subjects, and equally good at them. Can anyone please give me some advice on which one to take for 10th and why?</p>
<p>P.S: The one that i dont take now, i will take in 12th grade, and ap comp sci gets rid of a lot of my grad credits.</p>
<p>Don’t have a direct answer for you, but some thoughts -</p>
<p>Do you want to pursue either of these fields after the AP class? Take stuff at a community college? Prereqs for another cool high school class? If so… well, take that class first If you don’t plan on pursuing one more than the other, just flip a coin :D</p>
<p>im no sure…but i recently discovered ap comp sci is as difficult and consumes the same amount of time as an ap science class…my brother said it totally consumes his weekends… =/</p>
<p>Well, it is computer science. :)</p>
<p>Computer science is useful in almost any field you go into, so it might be a good idea to explore it earlier in high school and see if you’d like to pursue it (though I’m sure you could say the same about psychology). I took AP Computer Science as a class and self-studied AP Psychology because it wasn’t offered in my school. You might enjoy AP Psychology more as a class, though; I don’t know.</p>
<p>As for AP Comp Sci being really hard… My personal experience is that for some people who have no programming experience, AP Comp Sci is really, really, really tough. For others it’s really easy. I thought it was fun–an awesome opportunity to express yourself, just like you might through painting and writing, and learn from other people. Computer science has a lot of room for creativity and exploration, lots of room for growth, and lots of applications to other fields, including psychology.</p>
<p>Not that language matters much, but they use Java. -__-</p>
<p>people have been telling me in my school if you “think a certain way” in terms of programming you can finish all your h.w in class, but if you lack this skill you can suffer a lot and spend a lot of hours finishing projects. What where your experiences, what exactly is this way of thinking? I only have a couple of days to make my decision since school is ending D;</p>
<p>There is a way of thinking that you need to break through in order to program. IME, it’s not something you’re either born with or you’re not - it’s something that just suddenly occurs to you once you’ve been programming. When this occurs seems to be at different times for different people :)</p>
<p>I think it has more to do with how quickly you can pick up material and learn how to program–essentially, how to divide a task into steps and recognize what elements in programming (classes, methods, loops, conditional statements, etc.) fit each step best. I guess maybe “think[ing] a certain way” might be that you regularly divide tasks into smaller steps and can identify those steps, but I don’t think you can really determine whether or not you’re good at programming until you actually try it.</p>
<p>A family friend wrote this really excellent program called piktomir, which my younger brother is now using to grasp the basics of programming:
<a href=“http://www.piktomir.ru/[/url]”>http://www.piktomir.ru/</a> I think it might be in Russian, but if it is you don’t really need words for it anyway. Essentially there’s a robot, and you control the robot with commands. At first you just enter commands (walk forward, turn right, turn left, etc.) but soon you move on to using loops to repeat commands and then to using methods to group commands. Programming in Java is essentially the same thing, but with words instead of pictures, and usually more complex problems than commanding a robot. If you can handle piktomir, you can handle programming.</p>
<p>It’s mostly about how to translate a human idea into a mechanical one. How you can describe things like ‘when the Player is around here, the enemy should move toward him’ or 'the enemy patrol must follow this path … ’ etc. in terms of mathematical and algorithmic ideas. And of course, it must be as elegant, simple, organised and reusable as possible.</p>
<p>For example, a classic problem is writing a recursive solution to the Tower of Hanoi problem. Write a function solve(n, s, e, t), n = number of discs, s = start pin, e = end pin, t = ‘other pin’. Make it use a function move(s, e) that ‘moves a pin’ from s -> e to abstract away the actual move. Then you could put in a concrete move function that would print ‘move from <s> to <e>’ or something. You could even make it show a 3d animation and stuff - but that’s the job of ‘move()’ not ‘solve()’.</e></s></p><s>
<p>Hint: Mathematical induction helps. ;-)</p>
</s>
<p>I hate recursive functions. (-__-) I don’t like them.</p>
<p>@edoardo: True true. Recursion, though pretty, is less efficient than simple loops. When possible, avoid it.</p>
<p>Fibonacci made me crazy.</p>
<p>@lidusha: Not when it’s tail recursion. :P</p>
<p>I think the point of studying recursion is the beauty of expression of the algorithm, not computational efficiency. You’d have to store ‘local variables’ on a stack if needed and this keeps growing, which can cause problems in the ‘real world’.</p>
<p>@edoardo: What do you dislike about recursive functions? Think of it as, ‘if I solved a problem for X, how can I solve it for Y in terms of the solution to X’? Like, in factorials, ‘the factorial of n is the n multiplied by the factorial of the previous number’ (except for 0). You don’t have to think ‘how to get the factorial of n-1’ - that’s abstracted away. So just, fact(n) = n * fact(n - 1)</p>