Not too easy. Not too difficult.
While functional programming is a useful concept for some reasons, I think fundamentally Java and object oriented programming (taught in CS 150) is more real-world applicable.
I enjoyed building a miniature version of the Racket language. While it was difficult and I probably failed the project, it was still an incredible learning experience.
Hours per week:
Advice for students:
Start homework and projects early, because if you leave it to the last few days the time crunch and the stress will kill you. Lecture is not entirely necessary to do well in the course, but reading the notes definitely is.