# I'm teaching computer science - help!

**URL:** <https://boards.straightdope.com/t/im-teaching-computer-science-help/758757>\
**Category:** In My Humble Opinion\
**Created:** [June 30, 2016, 3:16am UTC](https://boards.straightdope.com/t/im-teaching-computer-science-help/758757 "2016-06-30T03:16:57Z")\
**Posts on this page:** 17\
**Page:** 3

<div class="post-metadata">

**Author:** ![enipla](https://avatars.discourse-cdn.com/v4/letter/e/54ee81/32.png) [@enipla](https://boards.straightdope.com/u/enipla)\
**Post date:** [July 4, 2016, 3:22pm UTC](https://boards.straightdope.com/t/im-teaching-computer-science-help/758757/41 "2016-07-04T15:22:57Z")

</div>

> [@Melbourne](#):
>
> 90 percent of computer programming is User Interface.

And 90 percent of that is knowing if what is desired is within the abilities of your current and planned environment.

---

<div class="post-metadata">

**Author:** ![Jragon](https://avatars.discourse-cdn.com/v4/letter/j/e19b73/32.png) [@Jragon](https://boards.straightdope.com/u/Jragon)\
**Post date:** [July 4, 2016, 4:21pm UTC](https://boards.straightdope.com/t/im-teaching-computer-science-help/758757/42 "2016-07-04T16:21:58Z")

</div>

It might be easier with a more structured course plan laid out for you. There’s [Nand 2 Tetris](http://www.nand2tetris.org/) which goes through the steps of building a modern computer from the ground up using simulated hardware, all the way to the stage of building a higher-level language and writing Tetris in it.

It recommends you know some Java to actually do it, since the high-level language you end up creating is Java-like, but if you struggle through it beforehand you may be able to provide enough guidance once you get to that section.

---

<div class="post-metadata">

**Author:** ![Saint\_Cad](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/saint_cad/32/18907_2.png) [@Saint\_Cad](https://boards.straightdope.com/u/Saint_Cad)\
**Post date:** [July 4, 2016, 5:55pm UTC](https://boards.straightdope.com/t/im-teaching-computer-science-help/758757/43 "2016-07-04T17:55:23Z")

</div>

As a computer science teacher can I point out something that the OP indicated and I hinted to.  
\<personal rant\>Please Please PLEASE use a language that is practical outside of your classroom. Some have mentioned Python. I mentioned Java if your students are going to move on to AP:CS and hell one could even argue teach them C because of the Ardino or javascript for web programming. I just see a lot of teachers that use specialized languages that are primarly used to teach programming yet provide no (simulated) real-life experience \</pr\>

---

<div class="post-metadata">

**Author:** ![ftg](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/ftg/32/2801_2.png) [@ftg](https://boards.straightdope.com/u/ftg)\
**Post date:** [July 4, 2016, 8:51pm UTC](https://boards.straightdope.com/t/im-teaching-computer-science-help/758757/44 "2016-07-04T20:51:06Z")

</div>

> [@Melbourne](#):
>
> 90 percent of computer programming is User Interface. …

Umm, for some people. Not at all true for many others. When teaching, you can’t assume that everybody will always do X. You have to be general. Spread the topics around.

Someone who dwelt almost exclusively on UI in a general programming course would be one crappy teacher.

---

<div class="post-metadata">

**Author:** ![Voyager](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/voyager/32/133_2.png) [@Voyager](https://boards.straightdope.com/u/Voyager)\
**Post date:** [July 4, 2016, 9:45pm UTC](https://boards.straightdope.com/t/im-teaching-computer-science-help/758757/45 "2016-07-04T21:45:11Z")

</div>

> [@Melbourne](#):
>
> 90 percent of computer programming is User Interface. 5% is persistent storage. 5% is domain knowledge and technical programming. It follows that if you want to train with anything _useful_, you have to train User Interface programming. But UI training isn’t _fundamental_. So there is always a dilemma: Fundamental stuff you teach won’t be immediately useful, useful stuff you train won’t be fundamental.

What areas have you worked in? Because I know of areas which are \< 1% UI, and that only for showing the software at trade shows. No one actually uses the UI in real life. Other applications may be more like what you say, but I don’t recall every working on one that is close to 90% UI.

---

<div class="post-metadata">

**Author:** ![enipla](https://avatars.discourse-cdn.com/v4/letter/e/54ee81/32.png) [@enipla](https://boards.straightdope.com/u/enipla)\
**Post date:** [July 4, 2016, 9:50pm UTC](https://boards.straightdope.com/t/im-teaching-computer-science-help/758757/46 "2016-07-04T21:50:28Z")

</div>

> [@ftg](#):
>
> Umm, for some people. Not at all true for many others. When teaching, you can’t assume that everybody will always do X. You have to be general. Spread the topics around.
> 
> Someone who dwelt almost exclusively on UI in a general programming course would be one crappy teacher.

Yep. Like I said in my post #41.

Of course the UI is important, and lot’s of code goes into it. But from a teaching standpoint, it means nothing if you don’t know what drives it.

To the OP. You can be an excellent chef with never seeing a cow. But be prepared to have a lot of cowboys in your class. And they will know how to cook.

---

<div class="post-metadata">

**Author:** ![Deeg](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/deeg/32/2955_2.png) [@Deeg](https://boards.straightdope.com/u/Deeg)\
**Post date:** [July 5, 2016, 7:58pm UTC](https://boards.straightdope.com/t/im-teaching-computer-science-help/758757/47 "2016-07-05T19:58:22Z")

</div>

> [@astro](#):
>
> You seem like a nice guy but this notion of yours is naïve at best and gibberingly insane at worst and reflects the cheery optimism of someone who does not have a clue what they are getting into. Teaching philosophy to kids and teaching programming to kids are very different things. Programming is not like teaching math or science or philosophy it’s more akin to a complex craft.
> 
> Teaching someone how to safely and professionally wire or plumb a house or building would be a closer analogy. You really, really need to know what you are doing and have some depth of knowledge before you can step into this and do an effective job.

I disagree to a point. The OP is teaching HS seniors; few, if any, will be getting a job based on this one class. The OP will be introducing the seniors to basic concepts and what programming entails and he doesn’t have to get it all perfectly correct. It’s up to the students to continue their education, most likely in college.

There’s no way the OP should be teaching a college class but he’s not attempting to do that.

---

<div class="post-metadata">

**Author:** ![DerekMichaels00](https://avatars.discourse-cdn.com/v4/letter/d/f14d63/32.png) [@DerekMichaels00](https://boards.straightdope.com/u/DerekMichaels00)\
**Post date:** [July 5, 2016, 8:02pm UTC](https://boards.straightdope.com/t/im-teaching-computer-science-help/758757/48 "2016-07-05T20:02:25Z")

</div>

I would argue Racket is the easiest language to learn basics of. Its syntax is simplest and you can manipulate images very quickly, unlike with other languages. Its also not strongly typed.

---

<div class="post-metadata">

**Author:** ![Blue\_Blistering\_Barnacle](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/blue_blistering_barnacle/32/3386_2.png) [@Blue\_Blistering\_Barnacle](https://boards.straightdope.com/u/Blue_Blistering_Barnacle)\
**Post date:** [July 5, 2016, 8:31pm UTC](https://boards.straightdope.com/t/im-teaching-computer-science-help/758757/49 "2016-07-05T20:31:07Z")

</div>

If I had to do what you are about to do, I would really try to find a summer class to take.

I’ve been trying to teach myself Python for about half a year now. It’s an occasional project.

I find myself both challenged and frustrated by the project.

Some of my sources explain some things well, but not others. Sometimes examples are helpful, other times, they are just “plopped out there”, so you can do that one thing, but can’t go further.

I feel I am missing fundamental things, especially about classes and program design. I know that I am missing skills in reading documentation. I’m still having fun struggling along, but if I had to do this well enough to teach in just a few months, I would absolutely take a class. I may break down soon and look for a night class in a nearby college, anyway.

---

<div class="post-metadata">

**Author:** ![Sage\_Rat](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/sage_rat/32/399_2.png) [@Sage\_Rat](https://boards.straightdope.com/u/Sage_Rat)\
**Post date:** [July 5, 2016, 9:00pm UTC](https://boards.straightdope.com/t/im-teaching-computer-science-help/758757/50 "2016-07-05T21:00:42Z")

</div>

> [@Blue\_Blistering\_Barnacle](#):
>
> If I had to do what you are about to do, I would really try to find a summer class to take.
> 
> I’ve been trying to teach myself Python for about half a year now. It’s an occasional project.
> 
> I find myself both challenged and frustrated by the project.
> 
> Some of my sources explain some things well, but not others. Sometimes examples are helpful, other times, they are just “plopped out there”, so you can do that one thing, but can’t go further.
> 
> I feel I am missing fundamental things, especially about classes and program design. I know that I am missing skills in reading documentation. I’m still having fun struggling along, but if I had to do this well enough to teach in just a few months, I would absolutely take a class. I may break down soon and look for a night class in a nearby college, anyway.

Unless you already know a number of programming languages, tutorials are going to be insufficient to really learn a programming language. You should get a proper book.

---

<div class="post-metadata">

**Author:** ![Blue\_Blistering\_Barnacle](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/blue_blistering_barnacle/32/3386_2.png) [@Blue\_Blistering\_Barnacle](https://boards.straightdope.com/u/Blue_Blistering_Barnacle)\
**Post date:** [July 5, 2016, 9:31pm UTC](https://boards.straightdope.com/t/im-teaching-computer-science-help/758757/51 "2016-07-05T21:31:55Z")

</div>

> [@Sage\_Rat](#):
>
> Unless you already know a number of programming languages, tutorials are going to be insufficient to really learn a programming language. You should get a proper book.

I did give up on tutorials and got a proper book for Xmas.

It’s been pretty good. But there are occasional flies in the ointment. I like to use Pythonista to program on my Ipad, which runs 2.7, but my book is Python 3 (not so bad, author points out how to do things if using 2.7). But Pythonista is sand-boxed, so it’s not always possible to use the modules the projects call for, so I try to figure out how to work things out. Sometimes I break down and use my laptop, instead.

But still, I figure that by “working things out”, I’ll learn stuff. Sometimes it works, sometimes I scrape by without learning much, and sometimes I’m just frustrated. I have no idea how many bad habits I’m teaching myself. That’s where I think I’m about ready for a live teacher.

Also, I’m constantly tempted off track by side projects…

---

<div class="post-metadata">

**Author:** ![Melbourne](https://avatars.discourse-cdn.com/v4/letter/m/b5e925/32.png) [@Melbourne](https://boards.straightdope.com/u/Melbourne)\
**Post date:** [July 6, 2016, 4:01am UTC](https://boards.straightdope.com/t/im-teaching-computer-science-help/758757/52 "2016-07-06T04:01:29Z")

</div>

> [@Voyager](#):
>
> What areas have you worked in? Because I know of areas which are \< 1% UI, and that only for showing the software at trade shows. No one actually uses the UI in real life. Other applications may be more like what you say, but I don’t recall every working on one that is close to 90% UI.

Management, Transport, Finance, Medicine, Production, Embedded, IOT. (Also DBA and DBdev.)

Missing IBM (and enterprise in general), Internet (except HTML), Apps, although I have of course been exposed to all those as a user.

Asm, Basic, C, C++, FORTRAN, Machine Code, Pascal, Python, Scheme (missing Java/.PHP/Perl.)

Today I’m reviewing ASM and doing DB scripting, investigating a timing bug in the coms system of an embedded device.

---

<div class="post-metadata">

**Author:** ![Voyager](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/voyager/32/133_2.png) [@Voyager](https://boards.straightdope.com/u/Voyager)\
**Post date:** [July 6, 2016, 4:37pm UTC](https://boards.straightdope.com/t/im-teaching-computer-science-help/758757/53 "2016-07-06T16:37:51Z")

</div>

> [@Melbourne](#):
>
> Management, Transport, Finance, Medicine, Production, Embedded, IOT. (Also DBA and DBdev.)
> 
> Missing IBM (and enterprise in general), Internet (except HTML), Apps, although I have of course been exposed to all those as a user.
> 
> Asm, Basic, C, C++, FORTRAN, Machine Code, Pascal, Python, Scheme (missing Java/.PHP/Perl.)
> 
> Today I’m reviewing ASM and doing DB scripting, investigating a timing bug in the coms system of an embedded device.

How do define UI? An IOT device with 90% UI code would be scary. I don’t see how any database stuff could be called UI. Embedded certainly not, by definition.  
I wrote a web based serial number translation tool that to the user looked 100% UI but was only 5% UI in terms of code.

---

<div class="post-metadata">

**Author:** ![Melbourne](https://avatars.discourse-cdn.com/v4/letter/m/b5e925/32.png) [@Melbourne](https://boards.straightdope.com/u/Melbourne)\
**Post date:** [July 7, 2016, 4:27am UTC](https://boards.straightdope.com/t/im-teaching-computer-science-help/758757/54 "2016-07-07T04:27:13Z")

</div>

> [@Voyager](#):
>
> How do define UI? An IOT device with 90% UI code would be scary. I don’t see how any database stuff could be called UI. Embedded certainly not, by definition.  
> I wrote a web based serial number translation tool that to the user looked 100% UI but was only 5% UI in terms of code.

Embedded devices? By definition? Even a pacemaker has to have a command and control interface.

Our IOT devices use code libraries. Like all IOT devices. And we have a private library for the local protocol. The web page has to be completely custom.

But seriously, are you trying to pin me down to an exact amount? Because I’ll go 80/20 rather than argue.🙂

---

<div class="post-metadata">

**Author:** ![Voyager](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/voyager/32/133_2.png) [@Voyager](https://boards.straightdope.com/u/Voyager)\
**Post date:** [July 7, 2016, 7:33am UTC](https://boards.straightdope.com/t/im-teaching-computer-science-help/758757/55 "2016-07-07T07:33:43Z")

</div>

> [@Melbourne](#):
>
> Embedded devices? By definition? Even a pacemaker has to have a command and control interface.
> 
> Our IOT devices use code libraries. Like all IOT devices. And we have a private library for the local protocol. The web page has to be completely custom.
> 
> But seriously, are you trying to pin me down to an exact amount? Because I’ll go 80/20 rather than argue.🙂

I was just wondering what you meant by UI. Most web pages I’ll give you. But I wouldn’t call code which communicates with other devices a UI. If you call it that, then it might be a bit closer to what you say - but designing such an interface doesn’t seem very much like designing a UI.

---

<div class="post-metadata">

**Author:** ![Melbourne](https://avatars.discourse-cdn.com/v4/letter/m/b5e925/32.png) [@Melbourne](https://boards.straightdope.com/u/Melbourne)\
**Post date:** [July 9, 2016, 7:21am UTC](https://boards.straightdope.com/t/im-teaching-computer-science-help/758757/56 "2016-07-09T07:21:49Z")

</div>

> [@Voyager](#):
>
> I was just wondering what you meant by UI. Most web pages I’ll give you. But I wouldn’t call code which communicates with other devices a UI. If you call it that, then it might be a bit closer to what you say - but designing such an interface doesn’t seem very much like designing a UI.

The point is that most embedded devices have a user interface for command and control. Even (looking at my desk), my mouse, keyboard and WiFi dongle have configuration gui’s. Hearing aids, pacemakers, insulin pumps – there’s always a gui.

---

<div class="post-metadata">

**Author:** ![ftg](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/ftg/32/2801_2.png) [@ftg](https://boards.straightdope.com/u/ftg)\
**Post date:** [July 11, 2016, 9:21pm UTC](https://boards.straightdope.com/t/im-teaching-computer-science-help/758757/57 "2016-07-11T21:21:49Z")

</div>

> [@Melbourne](#):
>
> The point is that most embedded devices have a user interface for command and control. Even (looking at my desk), my mouse, keyboard and WiFi dongle have configuration gui’s. Hearing aids, pacemakers, insulin pumps – there’s always a gui.

There’s a UI. I run into non-GUI stuff all the time. I mean, very, very often. When programming on it, that’s okay. When using it for an actual end-app …

[Previous page](https://boards.straightdope.com/t/im-teaching-computer-science-help/758757.md?page=2)
