Hacker News new | past | comments | ask | show | jobs | submit | jkeesh's comments login

CodeHS: Software Engineer in San Francisco

CodeHS is a site that helps teach computer science to beginners with a focus on working with high schools. We work with students and schools all over the US and all over the world. Make a big impact on a small team in an exciting space.

See more at http://codehs.com/jobs

We are a company with a social mission, and we believe that we can help make computer science more fun and accessible to high school students. If you are a programmer, but also consider yourself a teacher--or if you love coming up with creative ways to explain things--or if you want to work on a meaningful project instead of programming widgets at the widget factory--then send us an email. You can email me at jkeesh@codehs.com

We're a small team of 6 with funding and a business model and soon to be a lot bigger. We have a monthly team hackathon (and recently had one for 150 students and teachers at Facebook http://facebook.com/codehs ), and are always thinking of ways to make working more fun.

See what students and teachers say about CodeHS: http://codehs.com/testimonials

How We Start Teaching:

We start teaching programming with "Karel the Dog," a dog that lives in a grid world and only knows four commands: move, turnLeft, putBall and takeBall. We use karel to teach that computer science is about problem solving. We start in JavaScript, but use a thin teaching library because we believe in teaching concepts over syntax.

Try it out and let us know what you think at codehs.com.

Our site is built in python, django, JavaScript, and we're on ec2.

CodeHS was recently a winner at NBC's Education Nation and has been featured on the Today Show and a number of other places.

Thanks! Jeremy

http://blog.codehs.com/


CodeHS: Software Engineer in San Francisco

CodeHS is a site that helps teach computer science to beginners with a focus on working with high schools. We work with students and schools all over the US and all over the world. Make a big impact on a small team in an exciting space.

See more at http://codehs.com/jobs

We are a company with a social mission, and we believe that we can help make computer science more fun and accessible to high school students. If you are a programmer, but also consider yourself a teacher--or if you love coming up with creative ways to explain things--or if you want to work on a meaningful project instead of programming widgets at the widget factory--then send us an email. You can email me at jkeesh@codehs.com

We're a small team of 4 with funding and a business model and soon to be a lot bigger. We have a monthly team hackathon (and recently had one for 150 students and teachers at Facebook http://facebook.com/codehs ), and are always thinking of ways to make working more fun.

See what students and teachers say about CodeHS: http://codehs.com/testimonials

How We Start Teaching:

We start teaching programming with "Karel the Dog," a dog that lives in a grid world and only knows four commands: move, turnLeft, putBall and takeBall. We use karel to teach that computer science is about problem solving. We start in JavaScript, but use a thin teaching library because we believe in teaching concepts over syntax.

Try it out and let us know what you think at codehs.com.

Our site is built in python, django, JavaScript, and we're on ec2.

CodeHS was recently a winner at NBC's Education Nation and has been featured on the Today Show and a number of other places.

Thanks, and happy new year! Jeremy

http://blog.codehs.com/


This looks fantastic. I just have a question for the author (+ Mozilla). Since this is a hosted service, I'm a bit reluctant to integrate it, because I'm not sure what we should expect from Mozilla on this project. Is this a cool open source project that will get support for a little and then fade away? Is this something that a team is really behind and is going to continue to support and extend? Is it expected that most people will just host their own version? (doesnt seem that hard to do, but there is a lot of appeal in not managing the server for this at all)

If this was from a startup I would expect a free trial and then a pricing page that told me what happened if I had X # of users or Y # of requests, but without that info, it seems there is a lot of missing information. Does Mozilla just plan to keep it hosted indefinitely? Or how do you plan to handle users of different sizes? Our use case now is small, but in choosing to go with this tool (vs. Firebase or something else), the switching costs down the road are relevant.

I'm planning to try it out in a small test either way, I'm just curious about more details on the mozilla-hosted version.


The server is fairly trivial. It's mostly there to make it easy to try. If you want to host the server, go ahead (source is on github).


CodeHS is hiring in San Francisco, CA!

CodeHS is the best way for beginners to learn how to program. We focus on working with schools, and work with hundreds of schools and thousands of students all over the world. CodeHS focuses on making online education about the community, as you work through the program, you get help from real people.

http://codehs.com/jobs

===== Head of Sales, Business Development ===== Description We’re looking for someone to run our sales efforts. You’ll be in charge of keeping on top of our pipeline, emailing and calling teachers and principals, and closing deals. You should be passionate about education and excited about helping educate students in computer science all over the world.

Responsibilities Respond to inquiries from teachers, principals, and superintendents Qualify leads and prioritize your time Work with a team and individually Explain the features and benefits of CodeHS

===== Tutor Experience/Community Manager ===== Description CodeHS has a global network of tutors helping students learn to program all over the world. You will be in charge of managing the tutors and tutor recruitment process, helping maintain tutor quality, and making the tutoring experience fun and rewarding.

Programming experience required, or ability and desire to pick up programming quickly!

Responsibilities Manage current tutors on site Review tutor performance Find College CS Majors to hire as remote tutors Communicate between students, schools, and tutors to see how tutor feedback is working

===== Lead Content/Curriculum Developer ===== Description CodeHS is always looking to expand and improve our content. Help lead efforts to teach new concepts, new languages, and new tools to students all over the world. Significant programming epxerience required, and experience teaching computer science at the high school or college level is a signifiant bonus.

Details of Role Degree in computer science Excited about learning and teaching programming Wants to be creative about making learning progamming fun and engaging Taught computer science at high school or college level, or significant experience creating learning materials or tutorials

===== Short Term Sales Job ===== Description

This job pays hourly. Help us sell CodeHS to schools. Respond to inquiries from teachers, principals, and superintendents Qualify leads and prioritize your time Work with a team and individually Explain the features and benefits of CodeHS

===== CodeHS Tutor ===== PART TIME Description Help out students all over the world who are learning to program. You will be a member of the CodeHS tutoring community, and help answer questions, give feedback, and do grading. This job is open to college computer science students, and in limited cases high school students or other programmers.

Details of Role Current computer science student at a university Fluent in English Excited about learning and teaching programming Get paid to help others Flexible hours, remote working


I recently sent an email to linode support, and got a very murky response. I used my debit card on linode, and it was recently used on transactions I didn't make in random parts of the world that I'm not in, so I had to cancel it. My first guess was that it was linode, and all of the posts here make it more likely.

Essentially: I am a linode customer. My cc details were somehow leaked. Adds a data point here.


Andrew--

We use Django and South in our projects, and really appreciate the work you have done. I just contributed, and am excited about this project.

My one suggestion/request: Please make it an emphasis to create awesome documentation. I am familiar with South now at this point but often find myself wishing more use cases and more examples were documented. I can usually "figure it out," but great documentation saves everyone time. This seems like a great project, so make the documentation great too!


Thanks for sharing this link. As it related to HN, I think you have to applaud all of the people who go out on a limb and share their work-in-progress side project, new startup, or anything else that they've created---knowing that half of the community will "point out how the strong man stumbles, or where the doer of deeds could have done them better."

I still am a relative beginner to the space, and I do find it frustrating when people dismissively point out such "obvious" problems with our project, or things we should be doing, but I think it comes with the territory.


Yeah! He even refers to the "critics" as such, those on the outside of the arena.


You make a lot of assumptions about how kids have to be taught coding.

> I tried everything possible. Every other trick in the trade. Even tried to start with Python first and not C.

> They struggle to understand where or why should you use an if/else/switch statement, or a for/do/while loop. Its difficult for them to map solution patterns to a code pattern. Its not their fault. Its ours. Better luck trying to explain a kid why they are being asked to write a program find greatest of three numbers, find factorials, or sort numbers. To them it very clearly looks math in a different language. Its that boring math thing all over again.

There are so many other ways to introduce students to programming. This is the main part of the problem. So many people think this is how you have to teach programming. I am in full agreement that you need to teach problem solving, and you can do that with programming.

We start teaching with a simplified language called "karel"--where you have a dog who can only turn left, move, and put down and pick up tennis balls. That's it. There is no overhead of python or C or java. It's just a few commands and a dog. And there is no question on why you should do it.... people do this because it is immediately fun. Printing "hello world" for most people (especially younger kids) is not immediately fun.

Try our demo on the code.org page http://www.code.org/learn/codehs

I have started thousands of students in person with our karel the dog demo. Everyone can do it. Almost everyone finds it to be really fun. Because karel is a simplified language, it is all about problem solving. How do you get a dog to find the midpoint of his world when he cant store variables, but can only ask questions about the state and put down tennis balls?

I contend that you can teach problem solving to students through programming--but it is so crucial how you make that initial experience feel.

There is no

    public static void main(String[] args)
to get started.

Try this out at http://codehs.com. We have schools using it all over the country, and young students can get if/else, and for/while.

> Beyond all this it needs to fun, which it very clearly isn't.

Find a student who didnt like programming, and have them try our karel the dog starter for 10 minutes. Let us know what they say. I bet they think it's fun.


I think both you and the grandparent are making a mistake. He assumes children dislike math. You assume children will like karel. I think the truth is that children have different interests and that you can only bring them to programming by latching on to those interests. Many children like math. Many other children will not like karel.

The result: to engage as many children as possible, you need several introductory tracks: one that uses math, one that uses puzzle solving, one that uses drawing, one for another common interest, etc. Also be aware of the way interests change with age.

Teaching is hard and almost every approach invented seems to rely on yet another silver bullet.


Nobody assumes that children inherently dislike maths. They can't dislike something they don't even know.

The point is that children start to dislike maths once they go to school. And they do - all kids in my class either already knew basic maths before going to school or were completely bored by it.

The same will happen with programming once it will be "taught" in schools as well.

Think of it this way - if you want people equally competent as you to teach your child in school, you have to pay them 1/n of your salary, where n is the number of students in class. If you pay them less, they will find a better paid job elsewhere like you did. And you don't want n to be large since it's hard to pay attention to more that a dozen of kids at a time.

Hence, school must either consume 5% to 10% of your salary per child, or be ran by people less competent than you. It seems that usually the latter is the case.


I appreciate your math, but it is slightly flawed.

You can get a bigger n, not by increasing class sizes alone, but also by letting teachers teach for longer per day than children learn. I.e. use you math per hour taught, not for salary.

What this means in practice is, use teachers for higher value added work, but let computers (or somebody less qualified) oversee other parts of the learning process.

What seems to work fairly well (I remember a study about it), is to let students read material at home, but solve problems in class. That's the opposite of the traditional getting lectured-at in class / exercises as homework approach.

Khan academy is another vector for leveraging teachers. It does not replace a good teacher, but it can augment a teacher.


The problem is that if you tell schools to implement "computer supervised" coding learning, they will tell the students to write a factorial implementation and then they'll test it for bit-perfect match with some "perfect" solution.

This way they will verify correctness, good indentation, meaningful naming of variables and so on. Because somebody in the school/government heard that this is what professionals care about.

IMO launching a media campaign which pushes schools to "teach" every child to program, without any plan prepared by professional teachers and developers and then permanent, ongoing support from such professionals, is asking for disaster. And the grandgrand...parent provided an example of such disaster.


Oh, I was merely talking about the possible. If you are cynical enough, you will always find a way for teachers to screw it up.


I think this is a good point, but I'll take it a step further. The kid that likes drawing doesn't have to be a programmer, so stop trying to teach it to him and let him draw without the constraints that programming brings. We don't all have to be the same.


The point you make here (and one made by many others) is a straw man/reductio ad absurdum argument.

People who advocate that everyone should learn to code (like myself) to not advocate the absurd conclusions that are used by others to refute this standpoint.

I do think people should learn to code. This does not mean I think: 1. Everyone should be a professional programmer. 2. "Everyone should be the same"

You can make similar arguments to a person who says "everyone should learn to read," but then you misunderstand the spirit of the discussion.


I'm not interested in logical fallacies. I don't think this is a particularly logical subject. When you say "people" should learn to code, do you mean everyone? I posit, completely illogically, that some people will contribute greater good to society without ever having their brain trained to solve a problem via algorithm. Even without contributing any good, maybe they'll just be happy. Of course I'm not against making things more interesting for those who do have an aptitude or drive for it, so please don't misunderstand that.


> I'm not interested in logical fallacies.

Careful. That may make you vulnerable to them.

> I don't think this is a particularly logical subject.

Are you sure advocating a solution that's not based on logic is the right thing to do?

> When you say "people" should learn to code, do you mean everyone?

First we must define what "learning to code" is. I (and, certainly, most others) do not advocate kids should learn Java (or Python). But I think kids should learn how to decompose complicated problems into simpler parts. I also think kids would gain a lot if they could make computers do what they want (going beyond "start WoW", for instance).

As for drawing, you can always draw with a pen and paper. I prefer to do it that way. However, if I decided to draw a fractal curve, I'd probably do a few sketches on paper, to grasp the ideas, then fire Emacs and write code to actually draw it.


> I do think people should learn to code. This does not mean I think: 1. Everyone should be a professional programmer. 2. "Everyone should be the same"

First of all, why we (adult) do programming? to automate something? to make repetitive tasks easier? or just for fun? and I don't see any good reason, why we teach kids programming. If it's to train their logical thinking, we can make a game for them, give them a basic set of rules, each rules have consequent, with their imagination they can make other rules based of basic rules, with one condition that new rules can't contradict with basic and other rules, I know it sounds like math, but they will get the basic idea of logical thinking, when you do something there is a consequence.

Programming is just a tools or way, if you prefer. Not to mention a new trouble when they have a solution but can't apply it with programming, because the technical barrier they had, even you use easy programming tools like Alice, certainly there will be technical problem for them.

I agree with, why we should learn kids problem-solving skill, because they just need their brain and basic tools like pencil and paper, maybe to scratch something, to visualize what they think.


Meanwhile, the kid who likes programming will probably be drawn to it naturally, as well. I know I was, a long time ago. I can appreciate wanting to lower the barrier to entry for such kids, but I honestly don't think it's excessively high to start with.


Friends of my age who were drawn into programming did so probably because when you turned on the (8bit) computer it was waiting for you to write a program. It was the default action. How would an iPad user be naturally drawn into coding? If you don't have friends around you who do it and serve as an example (or a classroom where you are presented with that possibility), I think few would come up with the idea of writing programs themselves.


It's dated, slow, ugly, and poorly-supported, but in my experience, Alice is the easiest introduction and call to action for a 7-10th grade proto-programmer.

You create 3d animations using an OO syntax. Like Karel, you build up from basic methods, but you get to animate a scene, rather than have a robot/dog pick up and drop stuff.

My students have really enjoyed it, and it let me get to deeper concepts far faster than other instruction.

edit: http://www.alice.org and it looks like development has actually woken up. The blog is active and there's a new version out. Big improvement over last year when I went there.


haha yes, you make a good point. I do think that including several ways to try to connect with beginners is important, and that is what we hope to do. I really like the logo the turtle approach as well.

I think my main concern with the previous comment is that the dominant method for introducing programming is too syntax-heavy, math-heavy, starting with a language with a lot of overhead for beginners, so ours is an alternative.

Not everyone will like our intro, as you note. But I think it has a very different feel than the way many students are introduced to programming in school (see AP Java class).


There may be no `public static void main(String[] args)`, but there's still a lot of `();`

We can do better! Why not just `move`, `turnLeft`, `putBall`, and `takeBall`?

Better yet, camelCase is kind of weird. Why not `turn left`, `put ball`, and `take ball`?


OT and I don't know if you'll find this useful but http://codehs.com/ looks like an absolute trainwreck to me, layout-wise. I'm using Firefox 19 on Ubuntu.


Thank you Hacker News reader for the very Hacker-News-esque constructive criticism. We are trying to improve our site, so if you have specific constructive feedback for us, we would appreciate it.

Thanks! :)


Apologies if "absolute trainwreck" came off as harsh or unspecific. My specific, actionable feedback is:

Check how your site looks in multiple common browsers (IE, Firefox, Chrome...) while you develop it.

Check how your site looks on screen sizes smaller than your own, by resizing the browser window.

If it looks fine to you, then maybe the problem is on my end. But there is definitely a problem on my end, as I assume you did not intend for the "Why CodeHS?" text to overrun on top of the photo of the classroom.


Looks OK to me using Firefox and Chrome on Ubuntu.


I tried in Chromium on Ubuntu, and Firefox and IE on Windows. It looks trainwreck-y on all of them for me.

By the process of elimination, I believe it's because I'm using a T-mobile wireless dongle. The upstream proxy attempts to reduce bandwidth by doing things like coalescing external CSS and JS inline. I've seen this break one other site (LinkedIn profile editing, which seemed to be a bit fast and loose about its use of ajax) but every other site I've used has been fine (even e.g. Asana, which is rather intensive.)

I looked at the source of codehs.com (insofar as I can figure it out, what with all the CSS and JS put inline...) and I'll change my actionable feedback to:

Try to keep it simple.

That seems like far more stuff than you'd actually need on a landing page.

I also noticed that, when loading on IE, it pops up a message saying:

    You are using Internet Explorer, an unsupported browser :(
    You should download Google Chrome so you can get started!
It's a pity that the site doesn't support the browser with the largest market share -- that's probably something you should work on.


It does. Google Chrome has the largest market share.


Thanks for the feedback. These are all things on our to-do list.


working fine for me. I think it might just be an issue with ubuntu.


> We start teaching with a simplified language called "karel" ... It's just a few commands and a dog.

Off topic, but curious: why does the language have semi-colons?


Because it's Java.

Also, significant whitespace is a pain in the ass.


It seems to be JavaScript, not Java.

Semi-colons are great for real programming. They help deal with ambiguity when you want to split something over several lines yadda yadda let's not have the debate here.

But I don't see it's utility in something like this. It becomes one of those "just because" answers if someone asks why you need to put a semi-colon at the end of the line.

I could understand it if it was pitched at an "almost ready to write real code", but from what I've seen, and looking over the chapter headings, that doesn't seem to be the case.

I guess really I'm trying to look at the balance between using a DSL in a real language and using a toy DSL with a simple syntax when introducing basic concepts and shaping how people think about problems.

I use "real" to mean anything written outside of the CodeHS playpen.


It looks like there are many, many implementations of Karel the Robot.

I first saw Karel watching the Engineering Anywhere CS106a videos provided by Stanford. That course was in Java but used Karel at the beginning to get students used to writing programs, in this case instructions to the robot. If things like why ; and what is this `public void` had to be introduced before the groundwork for understanding what they were doing, it was done with a 'do this and we'll be able to explain why shortly.' Which to me, is a perfectly valid way of introducing things.

Because the Karel implementation there was Java, controlling the robot was just Java. You learned Java syntax as you played in the sandbox. You used that syntax as you moved out of the sandbox.

FYI the semi-colon at then end of the lines, if I remember correctly, was explained with this is how you tell the computer in this language we're done with a statement. No different then us using periods in English at the end of a sentence, its just the rules of this language.

As an aside, I really liked the Stanford CS106a course videos. I think the instructor did a very good job introducing Java and programing in general.


I have a hard time understanding why on earth anyone would have semicolons and parentheses in a programming language for kids!

A comma, instead of a semicolon, would be much more natural for kids imo and the parentheses are just there to confuse it seems.

Just keep it as simple as possible and have the syntax as close to natural language "rules" as possible then kids might start to understand things better.


Clicking "Learn to code with CodeHS!" on http://www.code.org/learn/codehs results in the link being opened within the iframe.


Ah, that's a problem. Thanks for letting us know about that.


And the top navigation disappears if screen width is less than around 970 px. (Chrome, Windows)


Make sure to check out CodeHS. We are the little demo shown in the video using "Karel the dog." We work on making it fun and accessible to beginners, mostly in high schools and middle schools, but also have all ages of students. More than other "learn to code" sites, we focus on problem solving rather than syntax, and also provide help from real people to students along the way. http://codehs.com

It's exciting to see a video like this highlight the real need and current lack of computer science education in high schools. That is exactly what we are working on, and have high schools all around the country! If this is an issue you are interested, in please contact as at team@codehs.com


We develop our site in django and just bought the book. Excited to read it!


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: