<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>CS1 on C'est la Z</title><link>https://cestlaz.github.io/cestlaz-old-hugo.github.io/tags/cs1/</link><description>C'est la Z (CS1)</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Mon, 03 Jun 2019 13:27:22 -0400</lastBuildDate><atom:link href="https://cestlaz.github.io/cestlaz-old-hugo.github.io/tags/cs1/rss.xml" rel="self" type="application/rss"/><item><title>AP Classes, Placing Students, and First Topic Exposures</title><link>https://cestlaz.github.io/cestlaz-old-hugo.github.io/post/placing-students/</link><pubDate>Mon, 03 Jun 2019 13:27:22 -0400</pubDate><guid>https://cestlaz.github.io/cestlaz-old-hugo.github.io/post/placing-students/</guid><description>&lt;p>
Just like last year, I&amp;#39;m taking in two classes worth of students in to
my honors program. The challenge is that I can only teach two classes
and I&amp;#39;ve got to figure out what to teach and then which students
belong in which class.&lt;/p>
&lt;p>
It basically comes down to one of two courses, our CS0 (CSCI127) and
our CS1 (CSCI135). &lt;/p>
&lt;p>
CSCI127 is a first programming experience. The normal class is taught
as a large lecture with small recitation/labs. It&amp;#39;s Python based and
the kids do a bunch of small programs in a variety of domains. They
also cover a few &amp;#34;miscellaneous&amp;#34; topics including base conversions,
truth tables, simple circuits, a baby look at an Assembly language
and an intro to C++ at the end. My version also uses
Python but is much more of a deep dive and also brings in a few
Softwae Engineering practices. I don&amp;#39;t do the extras other than the
C++ intro.&lt;/p>
&lt;p>
CSCI135 is most analogous to APCS-A with the biggest difference being
our core language is C++. That means memory management, references and
all that good stuff. We also sequence things a little differently than
AP. For instance, we don&amp;#39;t do sorting at all until the second semester
but do deal with pointers. I don&amp;#39;t actually teach CSCI135 at all. Most
Hunter students take a 1 credit programming lab (CSCI136) to go along
with CSCI135. I teach a 3 credit version of that where we do a bunch
of enrichment.&lt;/p>
&lt;p>
On the student side, they come in with a range of CS experiences. Some
are 100% new to the subject, some are self taught, a few have taken
after school or summer programs like GWC, Technovation, or others and
a bunch have taken some CS in school with the largest numbers being
either APCS-A or APCS-Principles. &lt;/p>
&lt;p>
I&amp;#39;ve found the quality of the outside experiences to be uneven at
best. More often than not kids who come from them and think they&amp;#39;re
experienced programmers and really haven&amp;#39;t learned anything. I&amp;#39;ve
got to be careful with them but placement is easy. They go to
CSCI127. The same is true for kids coming in from APCS-P. APCS-P is
also very uneven in terms of what the kids come out with and it&amp;#39;s not
a direct replacement for our CSCI127.&lt;/p>
&lt;p>
The big question is what to do with the APCS-A kids. APCS-A does give
students a decent programming background but it&amp;#39;s in a different
language. There&amp;#39;s also the memory management and reordering of
subjects. It&amp;#39;s clear that for most students, even with APCS-A, our
CSCI135 is the right place. That said, we do offer an in house exam to
place out of it. A few of my students have done that but still do my
enrichment/lab class so I can be confident that the student is up to
speed on C++ and related issues.&lt;/p>
&lt;p>
All of this has led to some discussion in our department recently -
should APCS-A exempt students from our CS0? My argument is that it
should. While I&amp;#39;m no fan of AP or of the AP Exam, kids having finished
the class will have solved problems and built programs more complex
than those we require in our CS0 course. The counter argument relates
to those few non programming topics that are covered in CSCI12700,
specifically, number bases, truth tables, simple circuits, assembly,
and into C++. The argument against placing the kids out of CS0 is that
early exposure to those topics is valuable in preparing the students
for later courses such as those in our required systems/architecture
track. &lt;/p>
&lt;p>
Does that early exposure really make a difference? In this case, I
don&amp;#39;t think it does. For some topics, specifically recursion, I&amp;#39;ve
found that early lightweight exposure does help later on. We introduced
recursion through Racket (nee Scheme) in Stuy&amp;#39;s intro course and then
later revisited it in ACPS-AB. While I never formally collected data,
the early introduction seemed to help. On the other hand, I never
found early exposure to truth tables, base conversions and circuits to
make a difference even though we did do some of that in some
experimental sections of Stuy&amp;#39;s intro course and then revisted them in
the senior systems course. &lt;/p>
&lt;p>
Why did it seem to make a difference for recursion and not for the
other topics? Probably because the other topics are mechanical and
don&amp;#39;t require new thinking or deep thinking. You see it, you got
it. Recursion on the other hand is a problem solving technique so
there&amp;#39;s more to understand so the early exposure seems to help.&lt;/p>
&lt;p>
This also seems to be born out at Hunter where my early cohorts
didn&amp;#39;t get those small extra topics but all did very well in the
courses that &amp;#34;required&amp;#34; that knowledge.&lt;/p>
&lt;p>
In the Fall this discussion will continue. I&amp;#39;m not concerned about my
kids as I have a fair amount of leeway in getting them into the
classes they need. The trick is how to make sure that we&amp;#39;re not
forcing other kids to take classes they don&amp;#39;t need. We need to get these
kids to where they can start to interview for internships sooner
rather than later. At the same time, we have to make sure we&amp;#39;re not
placing kids to far up the track and setting them up for failure. &lt;/p></description></item></channel></rss>