Hello-- my son is a Freshman at a large pubic school. He (thinks) he is interested in Comp Sci and wants to take course work that is meaningful for him to explore the field and also as college prep. The options at his HS are very very limited and from my older D, I can attest, not that great either. Can anyone recommend some good solid online CS courses. Not just programming but real Comp Sci (algorithm design, data structures, etc.) Is online AP the way to go or would he need something else first? Sorry if this is posted in the wrong sub-area. I wasn’t sure where to put it!
Some college courses that the student can go through on his own (no credit):
https://cs10.org/ – introduction to investigate interest in CS and see how CS relates to other subjects. One of the instructors of this course also helped design AP CS principles.
https://cs61a.org/ – introductory CS course for CS majors (students expected to have some programming experience or CS 10).
https://datastructur.es/ – second CS course for CS majors. AP CS A is a subset of this course.
What exactly is offered at his HS? Check the school’s curicculum guide to see if there is a pathway. AP Computer Science Principles and AP Computer Science A are the likely candidates. What else is available?
DD’s HS has a fantastic IT program, so she has been taking some of those classes in addition to CS classes. It complements and supplements her CS studies.
OP - Is there a pre-engineering sequence at your S’s HS? My D was able to get more programming experience in her EE/Robotics sequence that way in addition to her CS course.
There are also lots of great summer programs out there.
The ONLY CS course is AP Comp Sci Principles. That’s it. He is in a Pre-Engineering Program and on the robotics team. I can’t tell yet if it is going to be interesting and rigorous or just kids playing around. The school is attempting to combine college-prep with “career technical education.” It doesn’t work. The preparedness level and drive of the students is too disparate. Maybe it will improve as he moves through HS though.
If he does not have much or any CS experience now, AP CS principles is a reasonable course to start with to help him determine if he will be interested in CS as a college major.
However, it would probably be a waste of time if he is already familiar with the content of the CS 10 course linked in reply #1.
I would still say to take the HS classes…Colleges would prefer you take HS classes (or DE classes)…because that is what they are in the business of.
E.g., they would rather you take Spanish 1 than say "I passed Level 1 on Duo lingo’
It is a consistent curriculum and they know you have taken proctored tests.
If he wants to continue to explore on his own, then great!
Personally, I would save some of the computer science conceptual classes (concepts, data structures, hardware architecture, etc) for the university. At the top schools, the major expectation for an advanced CS student will be to already know some programming languages well (Java, Python, C++, Matlab/R also helpful), and to be advanced in Math, going to Multivariate Calculus and beyond. Many community colleges will offer classes in the programming languages plus data structures. Places like Udemy and Coursera will also offer a ton of course options online.
AP CSP is ok for a 9th grader if he hasn’t had much exposure to computers in general. It is considered pretty lightweight. AP CS A, if it will be offered in the future, gives a beginning look at some computer concepts and Java programming development. A lot of high schools will often offer computer classes as well in Robotics, Cybersecurity, and programming languages.
I hope you’re not saying the colleges expect students to have finished MVC “and beyond” in high school.
It wouldn’t be the first time I’ve seen this on CC, and it’s just not true.
@RichInPitt what I meant to say is that if a student is seeking to be the best he/she can be at CS - they should seek out more advanced math classes such as going to MVC and beyond. That would be way more helpful as foundational knowledge than seeking out advanced CS classes.
There are wide variances in quality of conceptual CS classes - a Data Structures class at Berkeley consists of writing thousands of lines of code in multiple projects that easily can take up 80 hours each, as opposed to another school which might not require coding at all.
Interesting. My husband and I shocked there would be college CS program that don’t go into math, CS concepts, and programming. But we are now interviewing candidates that code themselves out of a box. Gotta have all of the above. Thanks for everyone’s input.
In terms of math, most prospective CS majors are not going to finish high school more advanced than calculus AB or BC. For those who do complete calculus BC or equivalent in 11th grade or earlier, discrete math, linear algebra, and calculus-based introductory statistics would be the most useful following courses for a prospective CS major. Multivariable calculus is mostly useful for engineering-based CS majors, or where the CS major wants to take calculus-based physics (perhaps in preparation for the patent exam).
There are “CS major” programs that appear to be more like business/IT major programs with a few programming courses. Any decent CS major worth the name should have substantial math (e.g. discrete math, linear algebra), the usual lower level CS concepts (programming, functions, abstractions, objects, recursion, data structures, computer systems, etc.), and the usual offerings of upper level CS concepts (algorithms, complexity theory, operating systems, compilers, networks, databases, software engineering, security and cryptography, artificial intelligence and machine learning, graphics, hardware design, etc.).
DS took the Intro to Python course by Artofproblemsolving.com many years ago and enjoyed it. I think they also have an Intermediate Python course these days.
Our high school does not have any programming courses. It does have some robotics and engineering courses with a bit of programming in them. It also has a good FIRST Robotics Competition (FRC) team. My son is a programmer there and has learned a lot by having to make the robot work. They program in Java. Hopefully your school’s team is a good one that allows the kids to learn.