Showing posts with label Careers. Show all posts
Showing posts with label Careers. Show all posts

Tuesday, March 03, 2026

Computer Programming or Software Development

My friend Pat Yongpradit has a post on LinkedIn that got me thinking. It starts with a key statement “Computer programming (coding) is not equal to software development.” Now I tend to think of those as similar if not identical but Pat points out that “Computer programmers and software developers are codified differently in the BLS data” BLS is the US Bureau of Labor Statistics BTW.

Interesting. So what is the difference? Computer programmers write code. The BLS describes computer programmers:

Computer programmers write, modify, and test code and scripts that allow computer software and applications to function properly.

Software Developers do more. The BLS describes software developers as follows:

Research, design, and develop computer and network software or specialized utility programs. Analyze user needs and develop software solutions, applying principles and techniques of computer science, engineering, and mathematical analysis. Update software or enhance existing software capabilities. May work with computer hardware engineers to integrate hardware and software systems, and develop specifications and performance requirements. May maintain databases within an application area, working individually or coordinating database development as part of a team.

‘A lot more words in that second job description. The BLS projects growth in the need for software developers and a decline in the need for computer programmers. I’m not so optimistic. My read on many of the layoffs in tech companies appear to me to be more about declining numbers of software developers. I could be wrong and maybe there are/were a lot more people just doing computer programming than I think. The industry keeps changing.

In my very first software jobs, back in the late 1970s, I would characterize my work under the software development description. While I did do some programming from specifications and design documents written by others (computer programming) I rapidly moved into meeting with users, analyzing needs, and designing and developing software and utility programs. Job titles may have been different but that was the work.

What may happen is that software development involves less coding than it has in the past because of AI. At least coding by humans. So BLS is probably right about a decline in the need for computer programmers. At the same time, if software developers spend less time doing actual coding they may have more time for higher level (if that is the right term) thinking and involvement in design. Unless AI starts doing more of that. So maybe we will not need more of them. Or perhaps AI will make it possible for more people to be software developers who wouldn’t be that now. We’ll see I guess.

My undergraduate degree is in Systems. One of the goals of the program was to train people to interface between most people and computer systems. In other words, to understand the needs that people/businesses have and translate it into what computer programmers need to know to write software. For a long time, that sort of work involved two sides and sometimes three. That is to say, sometimes there was a user/client, and analyst, and a programmers. Sometimes the latter two roles were one person.

Knowing how to write code was always essential because code is the language of computer science. Not knowing how to code was seriously limiting for someone trying to design software. I think that is always going to be the case at some level. So I think software developers, even those who prompt AIs, will always need to know some coding. More than just coding though, I think that students, anyone who is going to interact with computers and that incudes, of course, software developers, needs to have a background in computer science.

Computer science is not just coding but having an understanding of how computers work. What is computer logic? What is computational anyway? AIs have a lot to learn and people with a computer science understanding are who AI is going to learn from. We need to think of K-12 computer science as computer science – foundational ideas and concepts – and not just a class in how to write code. We need to prepare people to be software developers not computer programmers.

Mike Zamansky has a couple of recent posts on why CS still matters in schools that I think are worth a read:

Interested in seeing what the BLS thinks of employment changes because of AI? Check out Incorporating AI impacts in BLS employment projections: occupational case studies

Tuesday, March 25, 2025

High School Cybersecurity Course–What Belongs

The last few years have seen a huge expansion in the number and types of cyber security courses in high schools. Much of this has been driven by a growth in the realization that we, society, governments, businesses, need more help making our systems secure from bad actors. CS ed as career development. Great in career technical schools of course. Yet another CS elective in comprehensive schools as well. Pretty easy to sell to school boards and administrations.

The CollegBoard has jumped on the bandwagon with AP Career Kickstart Cybersecurity Pilots.  I did take a look through that program. To me, the first course looks a lot like a standard IT/Networking course. I guess that makes sense as a prerequisite. After all,step one of a secure network is setting up a network.

The second course looks a lot more like what I think about as cybersecurity. Could be a good course. I hope that some of the pilot teachers will share what they learn while teaching it.

I don’t know that all courses calling themselves cybersecurity are that deep though. From what I have seen, some courses that call themselves cybersecurity are mostly about staying safe on the internet. That’s not a bad thing as long as proper expectations are set.

One related topic I have been thinking about is writing secure code. Is there room for that in high school? On the other hand, are we doing students a disservice by not talking about it at all? That’s the area of cybersecurity I hope to spend some more time thinking about. I’m more of a coder than a network guy.

Wednesday, July 17, 2024

CSTA Day Two

Day two starts with sessions for ALL attendees. I started proctoring a session called Classroom To Career – CS Curriculum With a Purpose. This was a session presented by Oracle Academy.  Oracle presents these teaching resources and training for free. Always a popular price point for teachers. The curriculum is built for teachers and teachers can pick and choose which parts of it they want to use. It can lead to professional certifications. I can see this as a help for career/technical schools.

A word about proctoring. Proctors have two main jobs. Job one is to make sure that people scan their badge’s QR code on an iPad. This is to make sure CSTA can give them professional development credit for attending the session. Job two is to give speakers a five minute warning so the session doesn’t run late.

Getting people to check in is harder than you may think. Some rooms have more than one door and people come in through all of them. And the iPad is at only one of them.

Hallway track between sessions. One of the wonderful things about in-person conferences is the opportunity to have face to face conversations with people you interact with online all year. I can’t count the number of friends I have made through CSTA.

After the break, Guidance on Education in An Age of AI. Everyone is talking about it. No one really knows what it means but some people have looked into it and thought more about it than I have. So learn from the best available. Slides available at bit.ly/cstafuturecs

“When it comes to AI education, we do not have the luxury of burying our heads in the sand. CS teachers have the opportunity and responsibility to lead students in understanding the societal and ethical implications of AI:

the good and the bad,  the benefits and harms, the possibilities and realities.” Charity Freeman CSTA Board Chair

This could have been a workshop. I recommend getting the slide deck. There area lot of good links in it. Overall, I have a lot to think about.

After lunch, another session on AI for me, Empowering Students with AI Literacy: Integration Artificial Intelligence into Computing Education. This session is PACKED. This session was presented by the Raspberry Pi Foundation. One take away - It is important to teach about AI so that they can critically evaluate the tools they use. We also need to have diversity to protect us from bias based results. The website for Experience AI is at Experience AI (experience-ai.org). There is also a course for teachers to learn about teaching AI at  Raspberry Pi Foundation: Teach Teens Computing: Understanding AI for Educators 

OK, I am AIed out for now. So much to look at and think about later.

I decided to take a break  from sessions and take a serious trip through the exhibit hall. Lots of booth pictures to come but not until I can organize them. Among the booths were I spent some real time was with Robolink. Inside the cage to the left are a couple of small quadcopter drones. The drones can be programmed in either Blockly or Python.

I’ve looked at their booth several times over the years but never sat down to program a drone myself until today. It went far better than I expected. It really felt like an educational experience as I tried my program and iterated my code. Honestly, I’d like one myself. I can see classroom use though. They have classroom sets, curriculum, and professional development.

Next up, today’s keynote with Dr. Gholdy Muhammad “Cultivating Genius and Joy in Education through Culturally and Historically Responsive Pedagogies” A good talk. Very high energy which I appreciate at the end of the day. My big takeaway was the need for joy in school. There seems to be so little joy most of the time in schools. I may have to pick up her latest book Unearthing Joy: A Guide to Culturally and Historically Responsive Curriculum and Instruction

Tuesday, March 14, 2023

Book Recommendations for CS People

tl;dr Book recommendations:

Overnight Code was recommended to me after I recommended Code Girls on Facebook. Overnight Code is a truly inspiring story of a woman with two strikes against her (female and Black) whose hard work, determination, and talents helped her do some revolutionary work in naval engineering and integrating hardware/software systems.

Debugging code is arguably a lot harder than writing new code. Raye Montague was amazing at debugging code and integrating disparate systems. But also a good person who helped mentor and advance others. She was given tasks that others had said were impossible to complete. Talent and hard work (Raye had a lot of both) allowed her to accomplish beyond expectations.

There is a lot of good career and life advice woven into this story as well. Advice for everyone. I could have benefited from this book early in my career.

"Code Girls: The Untold Story of the American Women Code Breakers of World War II"  was recommended by several people in a Facebook group dealing with a Kindle Challenge that Amazon is running. The idea about code breaking sparked my interest right away. This book was more than just that though.

There were plenty of insights into code breaking but the look into the lives of these amazing women was the highlight. It was a different time and women would not as respected as they should have been. Yet, these women put their considerable talents into working for the war effort and their country.

Code breaking is a fascinating subject in itself of course. I enjoyed reading about the “bombe” machines, how they were created and used. I also found the difference that code breaking made in the conduct of the war (World War II) to be interesting. This is not the sort of thing many history courses cover.

It’s easy to label these books as books for Women’s History Month or the Raye Montague book as being for Black History Month but that would be a mistake. These are books for all year long. I recommend them to anyone interested in the progression of computing in society. Code Girls is a great read for cybersecurity or cryptography students. Overnight Code is a powerful read for anyone not just computer science people. It is just that inspiring.

Wednesday, April 13, 2022

Last Mile Education Fund–Making a Big Difference

We often underestimate the difference that small things can make. When I was in high school all I could afford was a cheap plastic slide rule (no calculators back then) and it really slowed me down with math. I sometimes wonder what a more expensive and accurate slide rule would have done for me. I had other privileges and did well in the long run. But that is not the case for everyone.

Privilege often gets conflated with potential when in fact a lot of potential gets short circuited because of obstacles that are more common for non-privileged students. Things that are non-issues for many become showstoppers for far to many others.

Picture a student with great potential in computer science who can’t afford a good laptop? Or cannot afford her textbooks or lab fees? Low income students often take longer to graduate because they don’t have adequate preparation and need some extra courses and time to catch up. That often means they run short of funds even with the finish line in sight.  Even good scholarships often leave gaps in funding that limit students from underprivileged backgrounds.

That’s where the Last Mile Education Fund is making a difference today. From the mission statement of the Last Mile Education Fund:

  “The Last Mile Education Fund takes an abundance approach, investing in a broader group of students already committed to technology and engineering fields, providing support for challenges they face beyond their control, and incubating them to be the next generation of innovators. “

Last Mile Education Fund invests in striving, low-income students pursuing degrees in the high-demand fields of technology and engineering to support them in their last mile to graduation and into a career.

A number of grant programs are available. Some of them specifically for female and non-binary students but a number of them are available to all genders.  The Microsoft Cybersecurity scholarship is for community college students of any gender for example. Full information about these opportunities is available at the Current Funding Opportunities page. I have links attached to some that have pages with more details.They include:

  1. EMERGENCY MINI-GRANTS
  2. Bridge Grants
  3. LAST MILE GRANTS
  4. MICROSOFT CYBERSECURITY SCHOLARSHIP PROGRAM
  5. NORTH TEXAS BIOTECH WORKFORCE FUND
  6. REU PARTICIPATION FELLOWSHIP

If you know of students who could take advantage of these grants please spread the word.  And let teams/people at universities and colleges who support low-income students know about these programs as well. They can help a lot of high potential students with some hurtles that could but shouldn’t hold them back.

Monday, April 08, 2019

Teach Programming or Teach a Programming Language

For me, teaching is all about the concepts. Programming languages change. My first programming language was FORTRAN. This was the big language with I was in university. Today? Not so much. But loops and decision structures still exist. Over my career, I have learned a bunch of programming languages. I’m not sure I want to know how many but its a lot.

This morning I was reading Mark Guzdial’s blog as one does (Why we should explore more than one programming language across the curriculum) which comes as I am looking hard at my school’s computer science curriculum.  We teach several programming languages. Visual Basic in our freshmen course, App Inventor for our mobile app development course, C# in honors programming, JavaScript in AP CS Principles, and Java in AP CS A. SO potentially students can learn a bunch of languages during their time here.

Is this good or bad? Are there too many languages? Are these even the right languages? I believe that much is dependent on ones goals. Is our goal (in HS CS) to teach a programming language or to teach how to program (programming concepts).

As I started off this post, I believe that in the real world people who develop software, professionally or other wise, will need to learn new languages as time goes on. Mark has been writing a lot about task-specific languages (Task-specific programming languages: People aren’t dumb. Programming is hard.) and it is pretty clear to me that is a coming thing.

Teaching all programming classes using one programming language is probably a great way to teach that language but to quote Mark’s blog “We have no evidence currently that language-specific programming knowledge will transfer” So how do we prepare students who will have to learn new languages for new tasks?

Someone once said that the second programming language is the hardest one to learn. I can see how that could be the case. On the other hand learning programming languages does seem to get easier after that second one. I believe it is because learning a second language forces one to think beyond the syntax.

In one class, some years ago, I started showing my AP students who to do the same loop in a number of languages, including assembly language, and one student claimed later that was the most valuable lesson of the course. I still try to show multiple languages at times but since most of our students have already been exposed to several by the time they get to Advanced Placement that seems less necessary today.

Still I toy with the idea of writing a parallel programming book using several languages.  This is an idea borrowed from parallel translation Bibles where several translations of the Bible appear side by side on the page. A great study tool for religion that might work in programming as well.

Coming back to goals, I can see teaching a lot about one and only programming language as a somewhat reasonable way to prepare for a job but not for a career. I still remember getting my first programming job because I knew one language pretty well. Six months later I was handed a project specification and a language reference manual for a language I had never heard of and told “go to it.”

I truly believe that having a background in multiple languages was the difference between success and failure for me.

Wednesday, November 14, 2018

Post-secondary Cybersecurity Curricular Recommendations

There is more computer science than we could ever cover in grades K-12. So much of it is important and exciting. Every parent open house I get suggestions for what we  should teach in high school. There is no way we can teach it all. There is no way we can do everything in universities either. One other thing is clear, cyber security is growing in importance. While I try to cover a little of it in my courses (easily fits a few classes in several courses) I can’t cover as much as I’d like. My hope is that universities cover a lot more. I think most do.

The ACM and IEEE have just reported out a document to help post-secondary schools design their cybersecurity programs. I haven’t read the whole document yet but I know some of the people involved in writing it  and in the process that goes into creating documents like this. so I am confident in recommending it.

Do you cover cybersecurity in your curriculum? How much do you have time for?


First-Ever Global Curriculum Guidelines Reflect Worldwide Demand for Qualified Professionals and Urgent Industry Needs

After an extensive two-year process, a joint task force led by the Association for Computing Machinery (ACM) and the IEEE Computer Society (IEEE-CS) has released a first-ever set of global curricular recommendations in cybersecurity education. This new set of guidelines, Cybersecurity Education Curriculum (CSEC2017), is designed to be the leading resource for comprehensive cybersecurity curricular content at the post-secondary level. More than 320 advisors drawn from 35 different countries contributed to CSEC2017.

Thursday, October 18, 2018

Professional Development Is Expensive–Who Should Pay For It?

I first started to appreciate the cost of professional development when I was working with and for Microsoft. Microsoft at the time was working hard to promote the use of Visual Studio as a programming teaching tool. Part of that effort was through professional development for teachers. I took part in some of these as a student and some of them as presenter. I could go into details but I think is is safe to say that when code.org says they spend thousands of dollars per teacher for professional development events (Moving towards sustainability of computer science in schools) I don’t doubt it for a second.

Still over the last bunch of years a lot of CS education professional development has been paid for by a combination of universities and industry (lots of that industry money was direct from Google to universities and a lot by a number of companies though code.org) This is not really a sustainable/scalable model. Well, it’s not sustainable if we are going to have enough CS teachers for every school to offer (and present) CS education to all students.

As Mark Guzdial points out in his recent post at CACM (Changing who pays for CS professional development in the US and who controls it: It has to be local ) it is not how other subjects do it either.
I have been hearing teachers say for years that industry should pay more to support CS education. And I have tended to agree. On the other side of the issue, many complain about an undue influence industry have on CS curriculum. Too many strings attached to the money. How much you worry about that often depends on how you feel about the company donating the money of course. Either way, is it fair to demand that the tech industry fund CS PD? Do other industries fund PD in their areas of interest?

Actually, yes they do. There is a reason that most math classes are taught with Texas Instruments calculators!  But, mostly you find industry funding for  career/tech programs in career/tech schools which tends not to get the public attention it deserves.
Is CS education a career training course or a core academic course? The answer is, of course, yes. If we want to really prepare students for either an academic or an industry future we have to focus on concepts and not on specific tools or platforms. This can be harder at times with industry funded training.

In the long run we really need two things. One is more pre-service training for teachers who will teach computer science. That has to be folded into existing teacher training programs. While that seems to be happening some it is slow progress. The other thing we need is professional development for in service teachers. That training has to be paid for and prioritized locally.

These days the PD for CS teachers I hear about most strongly supported in Advanced Placement Summer Institutes. That’s great and a lot of teachers benefit from it. My school paid my way to one a couple of years ago and I got a lot out of it. Training for teachers in K-8 and for courses that come prior to AP courses do not appear to have the same number of local options for teachers.

That is changing especially with the work that code.org is doing with their local affiliates. Many of those programs will, I hope, grow and expand to reach more teachers. That will only happen as schools and school districts start encouraging (by funding) teachers to attend these courses.

There is a less tangible, measurable reason we need local funding of CS PD.  Organizations, and individuals, send a strong message by what they are willing to spend money on. Spending money of CS ED PD shows that CS education is important, that it is valued, and that the people teaching it are valued. Making it clear that CS education is important enough to spend money on training for teachers is an important message. I tend to believe spending money of PD will help retaining teachers and that is going to be really important.

Sunday, August 05, 2018

Computer Science and Farming

One of the things I tell students is that computer science is relevant to a lot of careers that they may not think of at first. An announcement I read last week and a visit to a farm reminded me of that this past week.

The article was about a joint effort between Microsoft and the Futures Farmers of America. (Future Farmers of America, Microsoft to develop tech-based agricultural curriculum) The FFA is an amazing group that does a lot to help prepared young people for careers in farming. Modern farming is a lot more than sticking seeds in the ground and waiting for plants to be harvested. Actually it has always been a lot more than that but technology has long had an expanding role in making farming for efficient and productive.

As I said, I also visited a farm last week. The owners are friends of mine and they are working other jobs as they build up the farm. Technology is a big part of how they manage things at the farm while not living there full time. Obviously there is we-fi available throughout the a farm. There are remotely accessed cameras and a very nice weather reporting system for starters. As I toured the farm we talked about future efforts.

One thing under consideration is RFID tags on each of the trees in their apple orchards. This would allow notes to be easily taken and recorded on the condition of individual trees. Other thoughts include computer (and remotely) controlled irrigation. Being able to pay more and better attention to individual plants or parts of a farm - precision agriculture – is something that computerization makes practical.

I’ve been reading about using computers to plan grazing patterns that make for more productive pastures, robots that scan and treat individual plants at high speed, and artificial intelligence analysis of aerial photographs of crops. I think we’re on the verge of a big jump in technology use in farming with a jump in productivity and efficacy in farming. Pretty darn cool!

Wednesday, July 11, 2018

Taking the Microsoft Technology Associate (MTA) Exam

Contrary to popular opinion I did not do it for the free t-shirt. Certaport was offering teachers at the CSTA Conference the opportunity to take a MTA exam (or exams) for free. If you passed you also got a t-shirt with your certificate. I had other reasons to take it though.

Yes, I wanted to test myself a bit. I had not studied for any of them and I hadn’t planned on taking any exams. When several of my friends took exams (and passed of course) I decided maybe I should try. I chose the Block Based Programming exam because I teach some block based programming. The exam is currently based around TouchDevelop which has been discontinued but the exam will be rewritten for the blocks in MakeCode.com soon. In any case, I know some TouchDevelop so it seemed a good choice.

More importantly I was curious as to how the tests were given. What sort of questions where asked? How are they presented to the test taker? And more process sorts of questions.

It turns out that questions are asked several ways. There are a few ordinary multiple choice questions. There are a few questions where you have to read and understand code. There are also questions where a problem is explained and code is shown with “holes” that you have to fill from drop down lists. There are also Parsons Problems types of questions. In these you are presented with a problem, 6 to 8 lines or blocks of code and asked to place the right blocks in the correct order to solve the problem. There are usually extra blocks of code. It’s harder than you might think. There were also questions I would categorize as software design or software engineering questions.

In fact, the whole test is harder than you might think. You really do have to think and I was concerned about the 60 minute time limit for the 39 questions. My friend, Doug Bergman took the Java certification and told me he thought it was Advanced Placement CS level of hard. I feel pretty confident in saying that these are rigorous (especially for first level certifications) exams.

I wish I had a system like that to give quizzes and exams to my students. Especially the Parsons Problems style of questions.

Oh, yes, I did pass and I did get my free t-shirt.

Monday, December 18, 2017

What Do You Do Besides Write Code?

A bunch of years ago I read an op-ed piece in one of the news magazines. I forget the one but the piece itself has stuck with me for years. The Op-ed was written by a guy who was critical of software people. He was in construction and built things. And on the weekend he built more things. Software people just wrote code and didn’t, in his view, do useful things with their free time. At least they didn’t do construction type things on their own houses.

My first reaction was, clearly he wasn’t watching me as I built a large deck for my house or any of the other projects I’d done around the house. He clearly didn’t know my friend Philip who is building his own house. Yes, with his own hands. The man is an amazing carpenter who is also quite the software person. And he doesn’t know my friend Clint whose projects over the years have amazed with with their creativity and complicated construction. Or many of the others I know who build things with their hands and make their homes or cars truly their own.

My second thought was, the man wants me to be impressed that he does the something on weekends as he does for work? That’s crazy. He should be doing something else to stretch himself. If he really wanted to impress me he should tell me about the code he writes in his down time. People need something other than what they do for a living to keep them really grounded.

An article in Medium (“Every Computer Scientist Should Have A Creative Hobby” by Yash Tulsiani https://medium.com/@ytulsi/im-a-computer-science-major-interning-at-a-creative-agency-325bee27ed09 ) got me thinking about this again today.

Generally the best technical people, especially computer science people, I have known have had some sort of other creative outlet. Some music, some wood working (amazing how many CS people love power tools), and some write fiction. A bunch of them are seriously into photography.  

Computing used to be something that stayed locked into environment controlled glass rooms that people might be able to see into but not interact with. The opposite is true today. While once upon a time you could get away with esoteric and complex user interfaces or boring simple ones – card readers anyone? Today we talk to our computers and expect them to talk back. Today we want it all to be easy – swipe left, swipe right, swipe down.

Today computer science is never in isolation Today it’s “computer science and …” where the “and” is anything and everything. People who can’t see past the computer and not very useful. People who are not creative and innovative are not the idea computer scientist today.

One of the things that creative hobbies have in common with computing is that they force one to look at things. To look closely at times, to look from far away at other times, and generally to look differently. A person who only has code as a tool and programming as a way of looking at problems is as bad as the carpenter who only has a hammer and sees all problems as nails.

As a teacher I occasionally see students who get totally immersed in one thing. It may be sports, it may be their music or art, sometimes it is computing, sometimes it is in some other academic subject. What ever it is I worry that they lose sight of the big picture. That can be a fatal trap in a future where most people will have multiple careers.

So you can code? Great! What other creative outlets do you enjoy?

Tuesday, August 08, 2017

How To Retain Computer Science Teachers

One of the big topics around computer science education is the shortage of teachers with enough CS knowledge to properly teach the subject. One fear is that anyone well enough versed in computer science to teach it is likely to leave teaching for industry. Mike Zamansky addressed this a bit recently with his post On Retaining Teachers. And earlier in Will we lose CS teachers to industry? This sort of discussion comes up a lot. The typical "answer" advanced is higher pay. Sounds great but not really practical.

Union rules in most public school systems prohibit paying premiums for different subject teachers. Where rules don't often custom or a systemic view of fairness (all teachers do the same job regardless of subject) prevent different salaries. If that is out, how does a school or school system retain teachers.

Mike Zamansky in his posts suggests non financial benefits for teachers. New electives for example. Letting teachers teach courses they enjoy is a good incentive. In the case of computer science teachers I can think of other incentives. Of course everyone is different and is motivated in different ways. So what seems good to me may not make everyone happy enough to stay. But I think they'll appeal to many.

Really things boil down to treating computer science teachers with trust and respect as well as giving them the tools to do their job better. For example, do computer science teachers have administrative privileges on the computers in their lab? If not, why not? One would expect that a well prepared CS teacher should be able to safely handle that responsibility. In fact it is often necessary for them to experiment with new tools and teaching techniques. Keeping administrative access from them shows a lack of respect and trust. That will make anyone feel less valued.

How about keeping teaching labs up to date? Yes it costs money but if you want students to be current then the equipment they learn on should be current. Plus making CS teachers find work around and hacks to deal with inadequate computers leads to frustration and discouragement. And by the way, the CS teachers should be consulted on decisions about computers and software for their labs. Believe it or not stories of teachers returning from summer break to find that PCs have been replaced by Apple Macs or Google Chromebooks are far to common. This is incredibly disruptive and makes for serious stress and aggravation for teachers.

Professional development is another area where CS teachers can use some support. While most systems have some money for professional development but teachers are not always encouraged to apply for it. With CS constantly moving regular PD is really necessary. Unfortunately it is not always close or inexpensive. Conferences like CSTA are wonderful but often districts are unwilling to pay the full cost (transportation and housing are the big costs.) These events are great for teachers but not all teacher can afford to pick up the slack on their own. Not on a teacher salary. Schools need to invest in CS teachers.

Related to both professional development and new electives (there are huge opportunities for CS electives that appeal to teachers and students alike) is some funding for new equipment for teaching. Not just the previously mentioned lab computers but things like Micro:bits, robots, quadcopters, and other electronics that can make CS more interesting and even more cross curricula. Different teachers have different interests and encouraging them to follow those interests and bring them to their teaching can be very motivating. And help with retention.

So that's my bit of brainstorming on the subject. What do you think? If you teach CS what sorts of thing motivate you to stay teaching and stay are your present school? What sorts of things make you want to leave? Maybe we can help our administrators out with some ideas.





Wednesday, May 31, 2017

News Flash! School and Industry Are NOT The Same

Computer Science cheating has been a discussion lately. Not just in the NY Times article I referenced the other day (Cheating In Computer Science Class) but on Facebook, on Twitter, and other social media. One sort of rebuttal to the concern over cheating was a blog post - Computer science students should learn to cheat, not be punished for it  - that also got a lot of attention. I see industry people nodding their heads in agreement. The problem is that the rebuttal author doesn’t seem to really understand the issue. There are some common misconceptions that I think need clarification.

Misconception: The goal of a school project is a working program.

That is what the goal is in industry. Make it work to spec and make the user happy. That is not the goal, or at least not the main goal, in a school project. The goal in a school project is to demonstrate what a student knows. Not what their friend or their parent knows but what they know. It is a diagnostic tool for the teacher to see how much learning is taking place. An imperfect tool to be sure but all we have are imperfect tools.

We also want them to practice and use what we are teaching. Cut and paste is usually a poor substituted for figuring out how to solve a problem and properly use the tools that are being taught. One learns more by doing than by simple copy operations.

Misconception: Students who copy code have to understand it to use it.

Oh if only that were true. Any teacher will tell you that students use code acquired from others without understanding it all the time. If a student finds a snippet of code, understands it, and uses it in a project most teachers would see that as a win. The student learned something. Wonderful! We’re happy. Using code without understanding it helps no one.

But it is not just snippets that are involved in cheating. Nothing so remotely borderline as partial borrowed code. Sometimes a student will hand in a full and complete program that they found on the Internet. And they will do it without understanding a bit of it. Who does that help? No one. Remember that in school the goal is gaining knowledge not just handing in something that works.

Misconception: Teaches don't want students searching the Internet for help

The internet is a wonderful learning resource. I know teachers who explicitly recommend sites like Stack Overflow to students and encourage them to look there for help. Some of us actually recommend reading the documentation online and even using sample code. As long as the student understands what they are using. Teaching is not just about covering the limited material but helping students learn how to learn. We’re thrilled when students use outside resources to go beyond the scope of the class. But we do want students to understand what they are doing.

Misconception: Programming for school and for industry should be the same

No. In industry the goal is a working program and in school the goal is learning. Industry expects employees to know things. School assumes they don’t and strives to teach things. The goals are different so the methods must be different.

I have heard the argument that schools should teach the things that industry needs using the tools that industry uses. It’s the old trade school mentality. And that works great for trade schools which serve a valuable purpose. Computer science education has to be more than just the tools of the hour. It has to be on concepts that last for a career. And that process is different from short term goals.

Sure using industry tools can be a good thing. And using things like Git and other source code repository/source code control tools is a good thing. Guess what? Many schools do teach those things. In fact arguably more CS departments teach more of the professional skills, especially soft skills, than many outside of education realize.

Misconception: Computer Science and Software Engineering are the same thing

Computer Science is more theoretical and software engineering is arguably more practical. One should not criticize one for not being the other. At the high school level we are not trying to create professional software developers any more than we are trying to create professional physicists or biologists. Rather we are trying to give students a conceptual basis for understanding the world in which they live. Links to more reading below.

I’ll conclude with one more point which I think may be the most important one. We need computer science professionals with integrity. We need professionals who are honest, who are ethical, and who are dependable. Educators care about cheating in its various forms because we value those traits as  much as we value the technical knowledge students gain in our classrooms and labs.  If a student cheats in school will they not also cheat the companies they later work for? I think so. And that should concern industry people. It should concern them a lot.

Wednesday, March 26, 2008

Students 2 Business - Its About the Jobs

Students 2 Business (S2B for short) is

"a Microsoft® Community Initiative designed to connect Microsoft partners and customers with qualified students for entry-level and internship positions.

The objective of the S2B program is to inspire local businesses to communicate the competency requirements for new talent, to evaluate the skills of students ready for an entry-level job or internship and collaborate with Microsoft and local education institutions to provide the curriculum and training needed to ensure students are prepared to meet the innovation needs of company’s around the globe.

Students engaged in S2B benefit from unique mentoring, training and certification opportunities. Various offerings are available to students at each stage of S2B – when profiling, in application and after job their connection."

The US site is here. The world-wide site (there are some 28 countries involved at this point) is here.  The world-wide site will help you connect to the right country site. There are links there for students looking for jobs, industry people looking to hire and university people who want to help their students get jobs. Check it out. You know, this would also be an interesting site to look at if you want to plan ahead and know what companies are looking for down the road.

Cross posted from Alfred Thompson's High School Computer Science blog