Hi @1NJParent!
- Virtually all CS courses are not capped, so there should be no trouble enrolling in classes. Upper level classes tend to be pretty small while the core classes (201 - 365) have grown quite a bit in recent years.
- There are introductory programming classes (CS50, CPSC 112, and more recently, CPSC 200) which aren't prerequisites for the CS major. If you have some programming experience in C/C++/Java and the like, then its entirely possible to skip these classes - quite a large number of freshmen do. Deciding whether to take these classes is entirely up to your own discretion.
CPSC 201 (Introduction to Computer Science) is the first required class for the major and mostly covers computer science fundamentals - boolean algebra, circuits and gates, computer architecture, compilers, etc. The problem sets are done in Racket (a variant of Scheme). Yale in general has a very loose definition of ‘required’ courses, so several people skip 201 and head straight to 223. However, very few self-taught programmers have any experience or knowledge of the topics taught in 201, so I’d definitely recommend taking the course even if it won’t land you a gig at Facebook. Racket/Scheme/Lisp introduces a new programming paradigm and is very interesting for someone who’s used to coding in C or Python.