<p>In general this would probably vary depending on the audience, both the age and the interests of the potential students. But since you say engineering students I will also assume young adults. This audience has some familiarity with mathematics and other technical subjects most likely. As such they aren't really all that different in background, only in interests, from computer science students. </p>

<p>My advice, then, for this group, would be to use any good introduction to programming intended for CS students. You could use any language, I think, but choose one that you are really familiar with. Engineering students will probably need to write programs over their careers, though most likely smaller ones rather than building commercial applications. I would think that modern C++ or Python would be good choices, depending on your own background. Either can be used by engineers in their own professional work. </p>

<p>In many such books, the exercises/problems will have a somewhat mathematical flavor, which should fit well with the existing skills of the students. </p>

<p>I don't see how building games would be useful unless you get really deep into how modern graphics and game engines are created. But that sort of thing is far beyond what you can do in an introductory course. </p>

<hr>

<p>Note that I said <em>modern</em> C++. If you use that language, don't use a book that requires the student to work through the entire history of C++ from C onwards. Choose one that stresses the recent standards and makes use of modern libraries.  For Python, make sure it is Python-3, not 2. Python-2 is about to become obsolete. </p>

CC BY-SA 4.0
2019-09-16T12:12:50.567Z
2019-09-16T12:12:50.567Z
Buffy
<p>You should start out by figuring <strong>why</strong> these students are learning CS.</p>

<ul>
<li>Is it because they're interested in game development?</li>
<li>Are they doing it for career advancement?</li>
<li>Is there extra credit involved? (Is this an independent study?)</li>
</ul>

<p>In other words, what do these students hope to get out of your lesson? What do you hope they get out of it? Why are you both there? What are your motivations? What are the student's motivations?</p>

<p>Note that I'm not requesting that you tell us the answer to these questions. Instead, the answers to those questions should inform the way you teach your lessons.</p>

<p>For example, if your students are all interested in <a href="https://en.wikipedia.org/wiki/Indie_game_development" rel="nofollow noreferrer">indie game development</a>, then something like Game Maker would be a logical language choice. If they're interested in statistics analysis, Python or R would be logical. If they're interested in <a href="https://en.wikipedia.org/wiki/Creative_coding" rel="nofollow noreferrer">creative coding</a>, then <a href="https://processing.org/" rel="nofollow noreferrer">Processing</a> or <a href="https://p5js.org/" rel="nofollow noreferrer">P5.js</a> would make sense. There are many many approaches, languages, frameworks, and libraries to choose from. What you choose depends on the <strong>why</strong> of your context. There isn't one single "best" approach.</p>

<blockquote>
  <p>My question is which one will be effective games or designing program</p>
</blockquote>

<p>Either one <strong>might</strong> be effective, depending on your goals.</p>

<blockquote>
  <p>If so any suggestions or programs/games examples will be help!</p>
</blockquote>

<p>This has been discussed many times on this site, so I'd recommend starting with a search. Here are a few places to get started:</p>

<ul>
<li><a href="https://cseducators.stackexchange.com/a/4785/2068">How to teach a person to enjoy programming?</a></li>
<li><a href="https://cseducators.stackexchange.com/a/4186/2068">Programming language for teenagers</a></li>
<li><a href="https://cseducators.stackexchange.com/a/2798/2068">Order to Teach Topics in an Intro Programming Class</a></li>
<li><a href="https://cseducators.stackexchange.com/a/5874/2068">Explain to someone that programming isn't just all “if”s and “else”s</a></li>
<li><a href="https://cseducators.stackexchange.com/a/173/2068">Programming languages specifically designed for beginners</a></li>
<li><a href="https://cseducators.stackexchange.com/q/19/2068">Using Processing as an entry point in an Introductory Course</a></li>
</ul>

CC BY-SA 4.0
2019-09-16T17:06:55.110Z
2019-09-16T17:06:55.110Z
Kevin Workman
<p>I would like to design or develop program or game to teach non CS-major(engineering students) programming  languages.My question is which one will be effective games or designing program?
If so any suggestions or programs/games examples will be help!</p>

<p>Thanks in advance.</p>

CC BY-SA 4.0
2019-09-16T12:13:02.097Z
This question is missing too many details to answer well. What do you mean by "games"?  What are you actually trying to teach them?  Is there a language or a set of concepts that you have in mind?  Are you at the program design stage, or are you running a single course?  How much time do you expect you will have with the students, and what is their background?
Ben I.
CC BY-SA 4.0
2019-09-17T01:33:12.220Z
I am trying to teach programming to them by regular program or by game. I did not choose program yet. yes,I will gave it as a single course.For the time maybe 4 month.thanks
Jared
CC BY-SA 4.0
2019-09-17T12:34:53.620Z
"Teach by game" meaning, have the kids compete with each other across the semester for points? Or have them code games (something like Unity)? Or have them play a game like Human Resource Machine?
Ben I.
CC BY-SA 4.0
2019-09-17T22:30:36.943Z
Hi Jared- you might find the guidance on how to ask a question useful in constructing a question that is more informative?  It would help to know what non-CS area the course is targeted at- perhaps there is a field that could be identified where coding would add some value?  How many hours/week?  Think about an objective for the class.  Will there be college credits, or is this more "for fun"?
Thanks.

https://stackoverflow.com/help/how-to-ask
srattigan
CC BY-SA 4.0
2019-09-18T05:16:58.827Z
@srattigan I don't need this link thanks
Jared
<programming>
what would be a best approach to teach programming to non CS major?
# what would be a best approach to teach programming to non CS major?

(Asked by: username_0 on 2019-09-16)

I would like to design or develop program or game to teach non CS-major(engineering students) programming languages.My question is which one will be effective games or designing program?
If so any suggestions or programs/games examples will be help!

Thanks in advance.

**Tags:** programming

> **Comments:**
> **username_1**: This question is missing too many details to answer well. What do you mean by "games"?  What are you actually trying to teach them?  Is there a language or a set of concepts that you have in mind?  Are you at the program design stage, or are you running a single course?  How much time do you expect you will have with the students, and what is their background?  
> **username_0**: I am trying to teach programming to them by regular program or by game. I did not choose program yet. yes,I will gave it as a single course.For the time maybe 4 month.thanks  
> **username_1**: "Teach by game" meaning, have the kids compete with each other across the semester for points? Or have them code games (something like Unity)? Or have them play a game like Human Resource Machine?  
> **username_2**: Hi username_0- you might find the guidance on how to ask a question useful in constructing a question that is more informative?  It would help to know what non-CS area the course is targeted at- perhaps there is a field that could be identified where coding would add some value?  How many hours/week?  Think about an objective for the class.  Will there be college credits, or is this more "for fun"? Thanks.  https://stackoverflow.com/help/how-to-ask  
> **username_0**: @username_2 I don't need this link thanks  

---

## 2 answers

### Answer by username_4 on 2019-09-16. Score: 2 | Accepted answer

You should start out by figuring **why** these students are learning CS.

* Is it because they're interested in game development?
* Are they doing it for career advancement?
* Is there extra credit involved? (Is this an independent study?)

In other words, what do these students hope to get out of your lesson? What do you hope they get out of it? Why are you both there? What are your motivations? What are the student's motivations?

Note that I'm not requesting that you tell us the answer to these questions. Instead, the answers to those questions should inform the way you teach your lessons.

For example, if your students are all interested in [indie game development](https://en.wikipedia.org/wiki/Indie_game_development), then something like Game Maker would be a logical language choice. If they're interested in statistics analysis, Python or R would be logical. If they're interested in [creative coding](https://en.wikipedia.org/wiki/Creative_coding), then [Processing](https://processing.org/) or [P5.js](https://p5js.org/) would make sense. There are many many approaches, languages, frameworks, and libraries to choose from. What you choose depends on the **why** of your context. There isn't one single "best" approach.

> My question is which one will be effective games or designing program

Either one **might** be effective, depending on your goals.

> If so any suggestions or programs/games examples will be help!

This has been discussed many times on this site, so I'd recommend starting with a search. Here are a few places to get started:

* [How to teach a person to enjoy programming?](https://cseducators.stackexchange.com/a/4785/2068)
* [Programming language for teenagers](https://cseducators.stackexchange.com/a/4186/2068)
* [Order to Teach Topics in an Intro Programming Class](https://cseducators.stackexchange.com/a/2798/2068)
* [Explain to someone that programming isn't just all “if”s and “else”s](https://cseducators.stackexchange.com/a/5874/2068)
* [Programming languages specifically designed for beginners](https://cseducators.stackexchange.com/a/173/2068)
* [Using Processing as an entry point in an Introductory Course](https://cseducators.stackexchange.com/q/19/2068)


---

### Answer by username_3 on 2019-09-16. Score: 1

In general this would probably vary depending on the audience, both the age and the interests of the potential students. But since you say engineering students I will also assume young adults. This audience has some familiarity with mathematics and other technical subjects most likely. As such they aren't really all that different in background, only in interests, from computer science students.

My advice, then, for this group, would be to use any good introduction to programming intended for CS students. You could use any language, I think, but choose one that you are really familiar with. Engineering students will probably need to write programs over their careers, though most likely smaller ones rather than building commercial applications. I would think that modern C++ or Python would be good choices, depending on your own background. Either can be used by engineers in their own professional work.

In many such books, the exercises/problems will have a somewhat mathematical flavor, which should fit well with the existing skills of the students.

I don't see how building games would be useful unless you get really deep into how modern graphics and game engines are created. But that sort of thing is far beyond what you can do in an introductory course.

---

Note that I said *modern* C++. If you use that language, don't use a book that requires the student to work through the entire history of C++ from C onwards. Choose one that stresses the recent standards and makes use of modern libraries. For Python, make sure it is Python-3, not 2. Python-2 is about to become obsolete.


---

