this post was submitted on 20 Jan 2024
9 points (90.9% liked)

Teach Programming

293 readers
1 users here now

Icon base by Delapouite under CC BY 3.0 with modifications to add a gradient

founded 1 year ago
MODERATORS
 

How does your school/university teach it? What have been the pros and cons of that choice?
Obviously, teaching students logical and foundational concepts is the most important part, but a student's first programming language does color their internalization of the concepts and how they approach solving different problems. For example, OOP is really hard to grasp coming from a functional background. Learning how to manage memory efficiently and use appropriate data types is really hard coming from an interpreted language like Python or Javascript. What have you and your peers decided works best for you and your students?

you are viewing a single comment's thread
view the rest of the comments
[–] ericjmorey 4 points 10 months ago (1 children)

When answering this question, I think there are big differences between

  • teaching college vs high school vs middle school vs elementary school students.
  • self selected students vs compulsory
  • prior exposure to programming, eletronics, or mathematical analysis

So I have to ask what kind of students are you teaching?

[–] DaleGribble88 2 points 10 months ago (1 children)

For me, college, but I was really just wanting to get a breadth of experiences from other folks. Frankly, my department is considering switching from Java to Python, and I was curious about pros and cons of that decision beyond what I could think of off the top of my head.

[–] ericjmorey 2 points 10 months ago* (last edited 10 months ago) (1 children)

It seems to me that many well respected CS departments in the US make use of multiple languages in introductory courses.

Some examples:

  • CS50 at Harvard uses Scratch, C, Python, SQL, JavaScript, CSS, and HTML.
  • CS 61A at UC Berkeley Primarily uses Python but also makes use of Scheme
  • CSCI 0190 at Brown primarily uses Pyret but also makes use of Python.

So it seems that it is common among introductory CS courses at a collegiate level to make up for the limitations of a particular language to use more than one.

Further, it seems that schools make an attempt to have a cohesive sequence of two or three introductory courses where courses build upon prior coursework to provide a broader breadth of foundational understanding. My favorite example of this is Cornell's CS 3110 which uses OCaml to teach Data Structures and Functional Programming.

I know this doesn't actually address your original question but I hope it inspires you to be flexible with the approach to the new curriculum.

[–] DaleGribble88 2 points 10 months ago (1 children)

I've been advocating for a CS50 style course at an introductory level. A little bit of python, some light data science labs with an SQLite database, throw some javascript at it to make some quick and dirty web representation. Really, all we want out of students are basic problem-solving skills, a familiarity with programming basics, and for students to be excited to learn more. I've got one other instructor in the department on board with this approach, but the rest are still having a little bit of trouble moving our courses out of the 1990s.

[–] ericjmorey 1 points 10 months ago

Awesome! I hope you can drag them along.