Answers.Body: <p>I teach and develop curriculum at a training-oriented nonprofit, and have taught in an academic setting as well. Here are some of the ways that I try to approach trainings for professional developers:</p>
  
  <ul>
  <li>Remembering that trainings are for practitioners, and as such, the lessons should be oriented toward objectives that will be immediately useful in their work. So, for example, with entry-level developers we de-emphasize (and sometimes leave out completely) topics such as concurrency and algorithm analysis.</li>
  <li>In general, relate the presentation of topics as much as possible to how they will be used on the job. With assignments, this can be essentially a linguistic slight-of-hand: state assignment tasks as user stories, provide a narrative for the assignment that aligns with workplace practices ("The client has asked for feature X, and your team lead has tasked you with this feature"), etc.</li>
  <li>Using current, professional-grade tools: Git+GitHub, widely-used IDEs, professional-grade databases (e.g. <em>not</em> DBs like SQLite).</li>
  <li>Using as supplemental (and sometimes primary) resources that professional developers use. In particular, we emphasize use of official documentation and references.</li>
  </ul>
  
  <p>These approaches often are employed in an academic setting, but they are essential (in my view) in a training setting, where developers will highly optimize their own learning toward direct, practical application. As the instructor, it's my job to make clear the connection between the material and their day-to-day work.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-06-10T13:46:02.363Z
Answers.LastActivityDate: 2017-06-15T04:17:06.577Z
Answers.LastEditDate: 2017-06-15T04:17:06.577Z
Answers.UserDisplayName: Chris Bay
Answers.Body: <p>Colleges and universities in the United States are required by our accreditors to have explicit learning goals and assess our effectiveness at meeting them. (I assume there are similar rules in other countries.) For example, here's how my upper-division Programming Languages course satisfies goals:</p>
  
  <ul>
  <li><strong>College-wide goals</strong>
  
  <ul>
  <li><strong>Students will learn to think critically</strong>, which they will demonstrate by
  analyzing the behavior of programs in diverse languages without executing them.</li>
  <li><strong>Students will learn to develop and realize their own creative visions across the arts and sciences</strong>, which they will demonstrate by choosing the appropriate programming language or abstractions for a task</li>
  <li><strong>Students will learn to communicate responsibility and effectively</strong>, which they will demonstrate by justifying choices among and within programming languages.</li>
  </ul></li>
  <li><strong>Computer science department goals</strong>
  
  <ul>
  <li><strong>Design and write a correct computer program</strong>, which they will demonstrate by writing programs both in and implementing new programming languages</li>
  <li><strong>Understand how computer systems (including architecture, operating
  systems, networks, and compilers) work</strong>, which they will demonstrate by
  adding languages features to an interpreter.</li>
  </ul></li>
  <li><strong>General education goals for quantitative and computational reasoning</strong>
  
  <ul>
  <li><strong>Translate problems into the language of mathematics and computer science,
  and solve them by using mathematical and computational methods and
  tools</strong>, which they will demonstrate by writing and reasoning about programs in novel programming languages.</li>
  <li><strong>Understand the structure and development of logical arguments</strong>, which they will demonstrate by analyzing the behavior of programs in diverse
  languages without executing them.</li>
  </ul></li>
  </ul>
  
  <p>If I were to teach a course in industry, I would be under no obligation to meet any goals other than those advertised for the course.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-06-06T15:28:46.373Z
Answers.LastActivityDate: 2017-06-15T01:12:24.613Z
Answers.LastEditDate: 2017-06-15T01:12:24.613Z
Answers.UserDisplayName: Ellen Spertus
Answers.Body: <p>Rather crudely you might see the differences as being:</p>
  
  <p><strong>A university</strong> - students engaged in study, where study is an <a href="http://www.newmanreader.org/works/idea/" rel="nofollow noreferrer">end in itself</a>.</p>
  
  <p><strong>Developer training</strong> - students engaged in study, where being job ready is the end goal.</p>
  
  <p>What does this mean in practice? Developer training might be more inclined towards studying using the latest technologies (Javascript, Rust etc). Whilst University might tend more towards studying conceptual understanding (Matrices, Functional programming) and place less importance on the programming language (some unis teach with Fortran, Delphi etc.). You might also get courses at universities that don't appear so immediately applicable to job roles (courses on provability of programs, compiler creation), whilst developer training might be shorn of any course that isn't in high demand by the industry.</p>
  
  <p>However. Working in the UK, the job readiness of a university degree is seen as a major indicator of the 'success' of a university course. We have the British Computer Society <a href="http://wam.bcs.org/wam/coursesearch.aspx" rel="nofollow noreferrer">accrediting courses</a> and universities are ranked on the <a href="https://www.thecompleteuniversityguide.co.uk/league-tables/rankings?s=Computer%20Science" rel="nofollow noreferrer">employment rate</a> of their students. So in reality, there might be no difference at all.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-06-06T16:59:40.887Z
Answers.Text: Developer training is more likely to be focused on a specific role than any university course though?
Answers.UserDisplayName: Sean Houlihane
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-06-06T17:09:46.323Z
Answers.Text: That's also true, the fact that you are learning for a job might be learning for a very specific job
Answers.UserDisplayName: pluke
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-06-15T08:30:39.483Z
Answers.Text: I'm not sure that the UK model is so nefarious, just a slow creep of business thinking into academia. I was in a meeting the other day with trainee teachers, where one was quoted as saying "Event X didn't feel like value for money", they are now customers...
Answers.UserDisplayName: pluke
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-06-06T14:57:14.727Z
Answers.LastActivityDate: 2017-06-06T15:09:29.550Z
Answers.LastEditDate: 2017-06-06T15:09:29.550Z
Answers.UserDisplayName: pluke
Body: <p>I teach university students and would like to start teaching prospective developers. As such, I have been thinking about the core differences between these two audiences.</p>
  
  <p>I find that students are sometimes less motivated and less prepared, while developers are more experienced and sometimes really enthusiastic.</p>
  
  <p>Is this correct? And if so, how should this difference impact my methods of instruction?</p>
  
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-06-06T16:04:46.383Z
Comments.Text: Welcome to cseducators! Could you add a little bit more context about the new coursework you are considering? It would help to make the answers you receive more targeted (and useful for future users)
Comments.UserDisplayName: Ben I.
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-06-14T01:44:56.687Z
Comments.Text: On hold so I can't answer, but you've found the difference between teaching at a community college (or equivalent) and a university.
Comments.UserDisplayName: ivanivan
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-06-15T14:31:54.797Z
Comments.Text: I wrote this procedural note as my feedback to the user(s) who flagged (who shall remain anonymous), but in case it's helpful for anyone else: "Debating scope is a major part of the early beta process, so I'm unwilling to mod-override this 'too broad' decision right now. If you feel strongly about it, I recommend starting a meta discussion."
Comments.UserDisplayName: Pops
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-06-20T13:03:32.833Z
Comments.Text: @Gergely - I've edited your prompt (with Itamar's help). We tried to leave the core question unchanged, but bring it to an openable state. If we erred, and you disagree with our edits, roll it back?
Comments.UserDisplayName: Ben I.
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-06-20T13:12:39.817Z
Comments.Text: (if you agree, let us know, so that we can vote to reopen)
Comments.UserDisplayName: Ben I.
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-06-20T13:13:57.587Z
Comments.Text: Let the edit roll!
Comments.UserDisplayName: Gergely
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-06-20T20:04:14.367Z
Comments.Text: To me, the groups "students" and "prospective developers" overlap. I'd want some clarification about the differences between the two groups.
Comments.UserDisplayName: Ellen Spertus
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-06-22T00:08:40.083Z
Comments.Text: To me, this is less broad and more unclear what you're asking. How do you define the two groups? What sort of demographic/age/etc are *your* students at? Etcetera. It's hard to compare/contrast with poor definitions.
Comments.UserDisplayName: auden
Tags: <student-motivation><adult-education>
Title: What should be the difference between a university course and developer training?
ThreadText: # What should be the difference between a university course and developer training?
  
  (Asked by: username_0 on 2017-06-06)
  
  I teach university students and would like to start teaching prospective developers. As such, I have been thinking about the core differences between these two audiences.
  
  I find that students are sometimes less motivated and less prepared, while developers are more experienced and sometimes really enthusiastic.
  
  Is this correct? And if so, how should this difference impact my methods of instruction?
  
  **Tags:** student-motivation, adult-education
  
  > **Comments:**
  > **username_1**: Welcome to cseducators! Could you add a little bit more context about the new coursework you are considering? It would help to make the answers you receive more targeted (and useful for future users)  
  > **username_2**: On hold so I can't answer, but you've found the difference between teaching at a community college (or equivalent) and a university.  
  > **username_3**: I wrote this procedural note as my feedback to the user(s) who flagged (who shall remain anonymous), but in case it's helpful for anyone else: "Debating scope is a major part of the early beta process, so I'm unwilling to mod-override this 'too broad' decision right now. If you feel strongly about it, I recommend starting a meta discussion."  
  > **username_1**: @username_0 - I've edited your prompt (with Itamar's help). We tried to leave the core question unchanged, but bring it to an openable state. If we erred, and you disagree with our edits, roll it back?  
  > **username_1**: (if you agree, let us know, so that we can vote to reopen)  
  > **username_0**: Let the edit roll!  
  > **username_4**: To me, the groups "students" and "prospective developers" overlap. I'd want some clarification about the differences between the two groups.  
  > **username_5**: To me, this is less broad and more unclear what you're asking. How do you define the two groups? What sort of demographic/age/etc are *your* students at? Etcetera. It's hard to compare/contrast with poor definitions.  
  
  ---
  
  ## 3 answers
  
  ### Answer by username_6 on 2017-06-10. Score: 6
  
  I teach and develop curriculum at a training-oriented nonprofit, and have taught in an academic setting as well. Here are some of the ways that I try to approach trainings for professional developers:
  
  * Remembering that trainings are for practitioners, and as such, the lessons should be oriented toward objectives that will be immediately useful in their work. So, for example, with entry-level developers we de-emphasize (and sometimes leave out completely) topics such as concurrency and algorithm analysis.
  * In general, relate the presentation of topics as much as possible to how they will be used on the job. With assignments, this can be essentially a linguistic slight-of-hand: state assignment tasks as user stories, provide a narrative for the assignment that aligns with workplace practices ("The client has asked for feature X, and your team lead has tasked you with this feature"), etc.
  * Using current, professional-grade tools: Git+GitHub, widely-used IDEs, professional-grade databases (e.g. *not* DBs like SQLite).
  * Using as supplemental (and sometimes primary) resources that professional developers use. In particular, we emphasize use of official documentation and references.
  
  These approaches often are employed in an academic setting, but they are essential (in my view) in a training setting, where developers will highly optimize their own learning toward direct, practical application. As the instructor, it's my job to make clear the connection between the material and their day-to-day work.
  
  
  ---
  
  ### Answer by username_4 on 2017-06-06. Score: 5
  
  Colleges and universities in the United States are required by our accreditors to have explicit learning goals and assess our effectiveness at meeting them. (I assume there are similar rules in other countries.) For example, here's how my upper-division Programming Languages course satisfies goals:
  
  * **College-wide goals**
    + **Students will learn to think critically**, which they will demonstrate by
      analyzing the behavior of programs in diverse languages without executing them.
    + **Students will learn to develop and realize their own creative visions across the arts and sciences**, which they will demonstrate by choosing the appropriate programming language or abstractions for a task
    + **Students will learn to communicate responsibility and effectively**, which they will demonstrate by justifying choices among and within programming languages.
  * **Computer science department goals**
    + **Design and write a correct computer program**, which they will demonstrate by writing programs both in and implementing new programming languages
    + **Understand how computer systems (including architecture, operating
      systems, networks, and compilers) work**, which they will demonstrate by
      adding languages features to an interpreter.
  * **General education goals for quantitative and computational reasoning**
    + **Translate problems into the language of mathematics and computer science,
      and solve them by using mathematical and computational methods and
      tools**, which they will demonstrate by writing and reasoning about programs in novel programming languages.
    + **Understand the structure and development of logical arguments**, which they will demonstrate by analyzing the behavior of programs in diverse
      languages without executing them.
  
  If I were to teach a course in industry, I would be under no obligation to meet any goals other than those advertised for the course.
  
  
  ---
  
  ### Answer by username_7 on 2017-06-06. Score: 4
  
  Rather crudely you might see the differences as being:
  
  **A university** - students engaged in study, where study is an [end in itself](http://www.newmanreader.org/works/idea/).
  
  **Developer training** - students engaged in study, where being job ready is the end goal.
  
  What does this mean in practice? Developer training might be more inclined towards studying using the latest technologies (Javascript, Rust etc). Whilst University might tend more towards studying conceptual understanding (Matrices, Functional programming) and place less importance on the programming language (some unis teach with Fortran, Delphi etc.). You might also get courses at universities that don't appear so immediately applicable to job roles (courses on provability of programs, compiler creation), whilst developer training might be shorn of any course that isn't in high demand by the industry.
  
  However. Working in the UK, the job readiness of a university degree is seen as a major indicator of the 'success' of a university course. We have the British Computer Society [accrediting courses](http://wam.bcs.org/wam/coursesearch.aspx) and universities are ranked on the [employment rate](https://www.thecompleteuniversityguide.co.uk/league-tables/rankings?s=Computer%20Science) of their students. So in reality, there might be no difference at all.
  
  > **Comments:**
  > **username_8**: Developer training is more likely to be focused on a specific role than any university course though?  
  > **username_7**: That's also true, the fact that you are learning for a job might be learning for a very specific job  
  > **username_7**: I'm not sure that the UK model is so nefarious, just a slow creep of business thinking into academia. I was in a meeting the other day with trainee teachers, where one was quoted as saying "Event X didn't feel like value for money", they are now customers...  
  
  ---
  
  