Tuesday, December 31, 2024

H1B AI and the Future of Computer Science education

H1B visas are back in the news these days. One one hand we have some loud calls for more H1B visas with a claim that US native workers are not up to snuff. Or at least that there are not enough good ones locally. On the other hand, people claim that well qualified Americans are losing out because foreign workers are taking jobs at lower pay. That the call for H1Bs is all about saving money. Amidst all of this, American students are wondering about future jobs for them between artificial intelligence and H1B workers taking all the jobs.

H1B and both hiring and salaries are actually more complicated than many think. Some claim that H1B workers work for less but the law and most hiring companies payH1B workers and natives the same salaries.Plus it can be hard to hire H1B workers because of government rules and paperwork.

On the other hand, supply and demand are involved. If H1B workers increase supply than salaries may be lower for everyone. My friends and contacts in the software industry complain that there is an over abundances of programmers and that the need is dropping because of AI. Other industries may very well be different. I just don't know.

From what I have read a majority of H1B visas these days do got to software developers. Are Musk and Ramaswamy talking about a need for other types of engineers? Are we facing a shortage of other engineers? I don’t know but I will focus on computer/software types because that is where my expertise rests.

Some of that Musk and especially Ramaswamy are saying is that US student don’t work hard enough and that the US educational system is not helping. Leaving aside that many of the people who agree with them want to cut funding for education and make the system worse aside, what is happening.

I have taught a number of international students over the years. These students generally do work harder and show more respect for teachers and for learning. Ramaswamy is not totally wrong on that. The students I have had are not typical in many ways from their peers in their home countries. I would hesitate to extrapolate to what goes on in those countries. Lets face it, it takes a very motivated and privileged student to go study in another country.

Priorities are a bit off in some respects in American education though. Look at how many states where the highest paid public employee is a college football or basketball coach. In other countries sports and school are not as connected as in the US. How often to athletes get special treatment in American schools and college admission! And yet, students come to the US from all over the world to study at American universities. Clearly, we’re doing some things right.

Cost of higher ed is a turn off and a burden for many. Universities are spending money on some non-academic things to attract students which adds to the cost. That is in part, I think, because the US has cut funding that could help students get a good education. People forget that the greatest growth in the economy came from GIs getting free tuition after WW II. Reducing government funding of higher ed is a direct cause IMHO, for a perceived need for H1B workers. If Musk and Ramaswamy think there are problems with US education spending more money IS the answer.

What does this mean for American students? Well, for starters it means they need to do more to prove themselves. Years ago I was working for Microsoft on a competition called the Imagine Cup. International students took to it and worked their tails off. American students, especially those at top universities, said that there wasn’t enough prize money to make it worth their while. A degree from a name university was all they needed. They saw no need to try to prove themselves. Those days are gone! And good riddance.

A student today who wants a career in software or related fields can get it but they should not expect it to be handed to them. The evidence companies are looking for are not grades or what university you attended but actual evidence of accomplishment. A solid portfolio in GitHub for example. Or projects completed in an internship or working to help a non profit. Or perhaps building out systems for a small business. What did you do outside of classwork?

High school students work very hard to get into universities. They research what universities are looking for and they build impressive resumes. Too often they coast once getting into university. Oh sure, the academics can be hard and they have to work at it. But universities have all sorts of support for students once they get into the university. It is tempting to think that university is about having a good time before being handed a good job. That is the mentality that hurts students.

Can American students have a good career in computing in spite of AI and H1B visas? Absolutely, but they cannot take it for granted.

Saturday, December 28, 2024

Three Keys To Being A Great Teacher

For the last 20 years or so I have been able to meet some truly great teachers. Some I visited in their schools. Some I met at conferences. Some I have become good friends with. I have concluded that there are three things that make good teachers into great teachers.

One: Relationships with students. Great teachers truly care about their students as people. They build relationships with students. They may not be close to all of them but they try to build relationships with as many as they can. They listen to students. It’s not about the struggles the student is having with the subject, thought that is important. They hear about the students struggles with life, with other subjects, and with what happens today. They respect students as people. Students feel that the teacher likes them because the teacher does like them. That is what lets them build a relationship.

Two: They are enthusiastic about the subject or subjects they teach. This can be difficult in elementary school where teachers have to teach a lot of different subjects.  Great teachers can fake it to some extent because they are passionate about enough of what they are teaching to know what that feels like. Passion is contagious. It also means that one wants to share that passion as well as the specific knowledge they are trying to share.  Students who have a relationship with a teacher will naturally want to learn what is being taught so enthusiastically.

Three: Innovation. A superintendent of schools once told me that there is a difference between a teacher with one year of experience 20 times and a teacher with 20 years of experience. The great teachers I have met are constantly innovating They may start with a canned curriculum, though rarely, but if they do they make it their own. They add, subtract, and move things around. More often though, they make their own curriculum. Oh, sure, they abide by necessary standards but they teach their own way. They are rarely satisfied. You’ll find a great teacher modifying their presentation, their project, anything, before teaching that material again. They often make up their own courses and adapt them to meet the needs of the students in front of them. And the times in which they live.

They also borrow from other great teachers. They are not afraid to find ideas from others and fit them into how and where they teach. These are the teachers you find at conferences. They are presenting but they are also there learning. If they present at a conference or PD session they welcome feedback and new ideas. They are talking to others in the “hallway track”, sharing meals and activities outside the conference. They are always listening and learning.

Bonus: The great teachers share their knowledge with others. They will share their curriculum. They will present at conferences. They share not for ego but because there is something about being a teacher that just makes one want to help everyone become better. Better about teaching. Better at knowing things.

Seek out the great teachers. Become a great teacher.  Make the world a better place. Make that part of your New Year’s Resolution.

Sunday, December 01, 2024

December Adventure–Write some Code Everyday

Eugene Wallingford let me in on A December Adventure  From the website “The December Adventure is low key. The goal is to write a little bit of code every day in December.”

It’s sort of like an Advent of Code but not as intense or competitive. I love the idea of the Advent of Code but it’s more work than I want to put into something. On the other hand, I like to idea of spending a bit of time on a new project every day.

Of course now I have to come up with and good project idea. I have been working on my Hexapawn game and it is tempting to just work on that a bit more. It still needs work.

It may be time to try something new for the month though. Maybe something Christmas related. Any ideas?

Tuesday, November 26, 2024

Hour of Code and Corporate Involvement in CS Education

An interesting article was shared on Facebook recently -Is the 'Hour of Code' the New 30-Minute Saturday Morning Cartoon Commercial? Take a look at it. It may make you think.

One statement there is that "corporate-sponsored Hour of Code tutorials for the nation's schoolchildren have blurred the lines between coding lessons and product infomercials." Well, that is something to think about. Blurred or crossed?

Those who know me know that for over nine years I worked for a big tech company supporting computer science educators. So clearly, I think that a lot of "big tech" involvement is a good thing. Is it now manipulating children? Well, that gets interesting.

BTW I am also friendly with people at Code.Org and have done work for them in the past. While I don’t/haven’t agreed with them on everything I think they are good people with good motivations. Just being clear on my biases here.

First off, I think there is a big a difference between Hour of Code and Saturday morning cartoons. Prime among those differences is teacher involvement. Teachers are the gateway to Hour of Code. And in fact, they are the gateway to just about all tech influence in CS education. While there may be some students finding and participating in Hour of Code, most students use Hour of Code in the context of the classroom, computer lab, or library under adult supervision.

My understanding is that many of these product placement modules in Hour of Code are solicited to attract/interest students in learning computer science. Put another way, computer science is the product and Minecraft or Disney characters are the show bringing the audience. In a sense, Computer Science is the advertisement and the corporate tool/characters are the show.

Does doing a Minecraft Hour of Code encourage students to play more Minecraft? Perhaps. Though my ten year old grandson hardly needs more encouragement as it is.

This can be a slippery slope or course. Where is the line between promoting computer science and promoting a commercial product? That’s hardly unique to Hour of Code. My grandson has a Chromebook because that is what his school uses. I doubt that is the only product that children want because they see it or use it at school. I trust teachers to be a good influence on their students. I don’t see they becoming salespeople for the companies helping support Hour of Code. I think they know when to encourage and when to point in other directions.

Companies know that Hour of Code is a gateway towards learning computer science. They see that as a good thing. If that leads to more students interested in their products as well I am sure they are happy about that. But they are still selling computer science first. Blurry lines are not the same as crossed. We should keep an eye on that though.

Monday, November 25, 2024

Artificial Intelligence Machine Learning and Hexapawn

A presenter at the recent New England CSTA New England Conference mentioned the game Hexapawn.  Hexapawn is hardly new. It was first introduced in 1962. I first ran into it in the early 1970s and found it to be an interesting challenge. One I was to intimidated to try at the the time Be that as it may, the paper introducing Hexapawn used it as something that was open to what we call today machine learning. That is to say, the more one plays it the better the computer gets at playing. The term my professor uses was heuristic programming.. Machine learning is a more accurate term for programs that learn though.

When I think about it, we were learning about artificial intelligence 50 years ago. Progress has been slow. It seems like “true AI” has been ten years away for all of that time. I am skeptical that we are there yet though clearly we are getting closer.

Returning to Hexapawn. There are several ways one can build code to play against a person. One way, the way involving machine learning is for the program to save every move and evaluate if it leads two a win or a loss. Each game leads to moves that are clearly not going to win and others that are more likely to win. This information influences each new game.

An other way is to hard code in moves based on a set of rules. I confess to playing with this strategy a bit. For example, a rule might be as simple as “if there is a move that places a piece in the wining row – take it.” Or perhaps, “if a move prevents the human from moving – take it.”

Rule based AI had a period of popularity especially in the 1980s. OPS5 was a rules based programming language that was used to create an “expert system” to configure computers. Configuring computers back in the mini computer era was a complex process. I worked for one company that believed that configuring computers was to difficult a task for computers. Configuring computers was an important part of my job there. When I left there and went to work for Digital Equipment Corporation I found that they had solved that question.

Which method is better for a game like Hexapawn? Programming rules based seems a little easier. It probably works for a limited game like Hexapawn but I doubt it scales. A machine learning program probably takes more initial work. In the long run it probably results in a more reliable winning game.

Hexapawn is a small enough project that it probably makes a project for helping students write actual artificial intelligence code. Are you using it?

FWIW I blogged about Hexapawn several years ago at Hexapawn–An Interesting Programming Project

Thursday, November 21, 2024

Interested in Industry Visitors to Your CS Class?

I get interesting messages from all sorts of places. Recently, I received this message on LinkedIn. I love the idea of bringing industry professionals in to talk to students. If you’re interested, check out their web  page and use their contact form.

  • I’m a software engineer at Microsoft and a volunteer computer science teacher at Kansas State School for the Blind

  • Outside of work, I’m starting a free initiative to bring guest speakers from the tech industry into high school, community college, or university classrooms or clubs to share their experience and do a q&a.

  • It’s called Insight Crew:https://insightcrew.org/

Tuesday, November 19, 2024

Online Programming Environments are Poor Preparation

Got your attention didn’t I? More and more teachers are using online coding environments to teach computer science. I used one myself to teach Advanced Placement Computer Scie3nce Principles. I’m not sure I did the right thing. Let me explain.

Recently I attended a panel talk at the CSTA New England conference on what high school teachers could do to better prepare students for university level computer science. Yes, I know that not all of our students will take CS in university but a great many of them will. So what did university people suggest?

As with most things, it’s complicated. Apparently, university professors are finding that students do not know how to do some simple things like deal with file directories or install software or use installed IDEs. Phones and apps are responsible for a lot of this. Students do not know where there work is stored or how to move files to a download location.  Some universities have actually added class modules to help here. Yes, remedial computer usage! Do your students need that?

They are also struggling with the tools that university professors expect them to use. Like installed IDEs. In university, students are expected to use IDEs like Eclipse, Visual Studio, Visual Studio Code or others. They are also expected to know where the files are being placed. They do not learn any of that with online IDEs.

Now I understand that for teachers working with incompetent IT departments, of which there seem to be far to many, are limited to online IDEs. It seems like IT departments are often the biggest obstacle to teaching computer science. But teachers need to fight back more. Teachers who can use installed IDEs should do so.

Online IDEs really do to much. Or perhaps I should say that they hide to much from students.  I am not advocating going back to the punch card days, fun as that might be, but we need students to get closer to what universities and industry are doing if preparation for later CS is our goal. And it should be a goal.

Installed IDEs do a lot for students. That’s true. They also force students to do a lot for themselves. That’s good. It helps them later on.