Хто може навчитися програмувати? [зачинено]


17

Я завжди вагаюся, коли розмовляю з професорами про те, щоб намагатися покращити відсоток людей, які закінчують ступінь вищої кваліфікації, порівняно з кількістю, яка починає думати, що саме цього хочуть. З одного боку, я дійсно думаю, що професіоналам важливо залучати та надавати такі відгуки, а з іншого боку, було б краще, якби менше студентів з нижчим рівнем закінчилися з дипломами CS.

Я не думаю, що кожен розум побудований на цій галузі, і ти повинен бути хорошим учнем. Ви повинні мати високий ступінь терпіння та навички вирішення проблем, аби тільки не проходити. Якщо у вас є "правильний" вид мозку, ці важкі проблеми - це те, що спонукає вас продовжувати. Якщо ви просто отримаєте довгий список легких проблем, вам набридне, тож ці люди насправді не підходять на більш повторюваних роботах. Мені не потрібно вникати в усі деталі ... якщо ти це читаєш, ти, мабуть, знаєш, до чого я звертаюся.

Отже, питання полягає в тому, як ви знаходите баланс програми, яка є доступною для достатньої кількості людей, щоб їх фінансували і вважали успішними, але також не виявляється людей, які насправді не вирішені на роботу? Можливо, краще питання, яку метрику ви використовуєте, щоб знати, чи зміни, які ви вносите в програму ступеня, покращують її? Я не знаю, що вища ступінь закінчення навчання - це хороший показник. І здається, що зворотній зв'язок, яку ви могли б спробувати зафіксувати через багато років, про роботу, яку влаштовують випускники, буде занадто затриманою.

Я довго боровся з цим питанням, в основному тому, що не думаю, що відповіді є. Але я подумав, що попрошу перевірити, чи хтось знає про якісь дослідження, які насправді були зроблені на цьому.

Доповнення: Нещодавно у мене був дуже мудрий професор, який нагадує мені, що не всі, хто закінчив ступінь CS, навіть хочуть бути програмістом на повний робочий день, як тільки вони виявили, що це означає. Але, маючи освіту, яку вони отримали, вони могли б стати чудовими менеджерами проектів, менеджерами, адміністраторами системи тощо. Я думаю, що це було дуже гарним моментом, який я не думав розглядати тут. Є дуже високий відсоток людей, які не закінчують працювати в галузі, в яку вони попрацювали, CS - це не виняток. Наявність додаткових людей допомагає не тільки в бюджеті на ступінь, але і збільшити відсоток непрограмістів, які ще достатньо знають про це для роботи з програмістами.


@ Робота - Спасибі, це чудовий момент і робить мене відчувати себе набагато краще.
Бет Уайтцел

2
@job: виступаючи як психолог, зараз програмуючи машини ЯМР, я можу це засвідчити.
Метт Еллен

Відповіді:


33

Гаразд, за попитом населення ... Нехай це вільний ринок розбере. Ви знаєте, 95% спеціальностей психології закінчують щось інше. Не кожен, хто має ступінь / неповнолітній CS, закінчує програмування, але вони роблять кращих менеджерів, аналітиків, керівників проектів, ніж тих, хто не має. Не носіть вагу світу на своїх плечах. Ступінь CS - просто аркуш паперу. Ті, хто має ступінь математики, фізики, хімії, біології, перетворюються на програмістів, і не кожен, хто має ступінь CS, стає програмістом. Без мільйонів дітей, які прагнуть бути найкращим бейсболістом, у нас не було б таких чудових зірок. Система саморегулюється.


Я певною мірою погоджуюся, але мені також доводилося підтримувати код, написаний людьми зі ступенями фізики, математики та машинобудування, які вважали, що вони програмісти. Тільки тому, що хтось робить щось за свою роботу, не означає, що вони роблять це добре ...
Joel C

7
Я бачив багато поганого коду, написаного студентами CS. Я бачив дивовижний код, написаний людьми з математики чи фізики чи ще. Не існує кореляції між тим, що саме ви вивчали, та якістю вашого коду.
поштовх

1
також, зайдіть біологією!
поштовх

11

Хоча я думаю, що важливо пам’ятати, що відповідь Іова важливо, таку ж відповідь можна було б застосувати і до ступеня. "Я заплатив 199,95 дол. США, тепер дайте мені ступінь CS".

Визначення студентського тіла відповідно до стандарту того, що "справжні програмісти" насправді не ваша робота. Навчання студентів програмуванню / проектуванню (імовірно?). Якщо ви не змінили свій спосіб мислення в коледжі, ви витратили свій час там. Ваша мета - показати будь-якому студенту, який проявляє інтерес до того, що ставши програмістом, змінює їхній спосіб мислення на краще. Ви робите це опосередковано, показуючи їх ...

  1. що програмування насправді є і ...
  2. що вони можуть це зробити.

Ми робимо це неправильно

Існує велике дослідження, яке показує, що шлях 95% наших програм коледжу викладає програмування / CS - це жахливо. Середня програма CS починається з

  • Семестр базового програмування на C ++ / Java / C #, який витрачає 16 тижнів на викладання кількох речей, більш досконалих, ніж "це для циклу". Аналогія може бути, якби кафедра фізики провела семестр на вивченні грецької абетки перед початком кінематики.
  • Другий семестр першокурсника потрапляє в основні структури даних і, як правило, повністю залишає після себе третину / половину студентів.
  • Рік Софомора проводиться в якійсь комбінації складання, структури даних, алгоритмічного аналізу, курсу етики і, можливо, ваш перший актуальний курс. Ви, як правило, втрачаєте ще половину своїх студентів, що надходять в цей рік.
  • Юніори та старшокласники потрапляють на заняття з такими назвами, як "Графіка", "Мережа I і II", "Операційні системи", і це перший дійсно цікавий матеріал, який студенти можуть побачити.

Майже все інше краще

Практично будь-який експеримент покращує ситуацію, виміряну з точки зору розуміння студентами теми І ступеня зарахування на програму І випускного курсу. Деякі експерименти, які я бачив у журналах ACM CSE, - це ...

  • Побудова від дуже простих теоретичних станкових машин до складання та переходу на C, закінчуючи C # / Java у старшому році. Основна увага приділяється повільному повзанню шарів абстракції.
  • Вибір дуже "простої" мови для орієнтації учнів на структури даних та абстрагування. Я бачив хороші результати, коли студенти писали досить складні веб-програми у варіанті схеми до кінця першого курсу. (Це був модифікований вікі, який запускав би текст сторінки за схемою, перш ніж відображати ... сортування веселощів)
  • Фокусування початкових студентів на певній області (мережа) та викладання кожної структури Java / заяви як "вбік". Студенти другого тижня пінг-поштовий сервер, щоб побачити список своєї електронної пошти, остаточний проект - простий клієнт чату. Основна увага приділяється тому, щоб показати студентам, як програмісти змушують одну частину світу працювати.
  • Деякі програми фокусуються на робототехніці. Першокурсник грає з душевними бурями Лего ... другокурсники використовують C-подібний API, юніори та старші працюють з МЕ та ЕЕ в крос-кампусі співпраці для створення досить складних систем.
  • Одна програма фокусує студентів на читанні коду за перше півріччя. Вони аналізують код у системі X11, щоб навчити контролю над потоком та основним синтаксисом протягом 8 тижнів або близько того, перш ніж навіть почати писати код. Їх перші програми - це невеликі виправлення, щоб трохи змінити поведінку.

Кожен з цих експериментів відчував значне поліпшення початкового інтересу студентів, передачі знань та збереження до закінчення навчання. Деякі є більш підходящими для певних середовищ коледжу, ніж інші, але якщо ви дотримуєтесь структури, описаної в пункті вище, запитайте себе: "Чи би я тримався за перші два роки цієї програми?"


Я погоджуюся з вами в тому, що ми повинні зосередитись на тому, щоб показати їм, що таке програмування, і як це може змінити ваш розумовий процес незалежно від того, що ви робите після цього. Гарні думки.
Бет Вайтзел,

2

Програмувати - це інструктувати логічно, щоб досягти бажаного результату. Іншими словами, це говорить комп'ютеру виконати якесь завдання. Єдиний спосіб рухатися вперед - це практикуючись.

Так само, як вивчати англійську чи будь-яку іншу мову, потрібно почати з вивчення синтаксису (алфавіту), а потім перейти до граматики та інших конструкцій. Необхідна кількість часу змінюється залежно від складності мови. Кодування мовами вищого рівня, як SQL, Python - це майже як написання англійської мови.


2

Я думаю, що кілька аспектів допоможуть -

  • Професори, які знають сучасний реальний світ. Якщо вони здатні говорити про сучасні технології та про те, як вона вписується в теоретичні рамки, це набагато більше стосується підслідників, які не знають історії, ніж розсічення VAXen без посилання на поточну технологію.

  • Стажування, що підтримується відділом. Якщо відділ може гарантувати принаймні 2 літа платної роботи з технологічними компаніями, то є великий стимул дотримуватися.

Відверто кажучи, сучасні студенти з інформатики набагато благословенніші, ніж ті, що жили ще 5-10 років тому. Можливість придбати систему низького класу, а потім встановити VM та безкоштовно вивчити кілька мов, операційні системи тощо - це така умова, що важко переоцінити.

Звичайно, насіннєві люди, як Хоппер і Кнут, навчали себе без шини. Геній вийде.


Хоча ідея чудова ... два літа гарантованої оплачуваної інтернатної роботи, на жаль, не реалістичні. Так, є стажування платне, але більшості випускників пощастило отримати одну виплату прямо зараз і часто доводиться влаштовуватися на неоплату. Це може бути різним в інших штатах. Я думаю, що ти маєш рацію щодо того, що в них більше функцій. Вони можуть внести свій внесок у багато інших проектів з відкритим кодом, тоді як було ще кілька років тому.
Бет Вайтзель

@BitOff: Я ніколи не чув про неоплачене стажування CS.
Пол Натан

Без жартів? Тоді це повинна бути локалізована річ.
Бет Вайтзель

1

Створіть зону інсценізації для потенційних, успішних студентів поза програмою ступеня, щоб зменшити ризик. Це може включати спонсорування занять AP CompSci в місцевих середніх школах для попереднього відокремлення пшениці від пшениці. Якщо це виявляється занадто складно, спробуйте проникнути місцеві глави DECA (або створити нову) за допомогою програми, орієнтованої на CS, у підрозділах середньої школи або коледжу. І навпаки, ви показуватимете підприємницьким студентам, які прагнуть до управлінських навичок, можливо, з нереалізованим потенціалом CS, нового шляху для здійснення своїх бізнес-прагнень через ваше академічне середовище.


Так, я повністю згоден з тим, що нам потрібно робити більше, щоб впровадити CS в більш ранньому віці, ніж в коледжі. Я знаю, що більшість вищих навчальних закладів пропонують один-два розширені комп’ютерні класи, які можуть перейти на мову програмування, але я не думаю, що цього достатньо. Я часто думав, що якби ви могли навчити простій, доброзичливій для дітей мовці класів-шестикласників, ви захопили б їхній інтерес у потрібному віці. Я вперше вивчив основні, коли мені було 8 чи 9 років, і хоча мені знадобилося ще 10 років, щоб реально ввійти в нього, це залишило у мене чудову пам'ять про "програмування".
Бет Вайтзель

1

Я заперечую, що головне в розумінні різних рівнів таких програм:

Університети - Це, як правило, там, де можна вчитися лише заради навчання. У цьому випадку може існувати зовсім інший стандарт щодо створення програм та їх коригування, оскільки це може бути цілком теоретично, або, принаймні, про це я пам’ятаю, вивчаючи інформатику на своїх курсах старших курсів.

Коледжі - це, як правило, більш орієнтоване на кар’єру, і саме тут зворотний зв'язок від галузі та зв'язок компаній з коледжами є ключовим моментом. Огляд місць розташування через 6-12 місяців після закінчення навчання може бути показником, який використовується для того, щоб побачити, наскільки добре працюють люди після закінчення навчання. Основним питанням є те, чи хтось бачив свій час та гроші, отримуючи цю освіту як цінні. Оновлення програми, ймовірно, буде більш частим, оскільки програми тут можуть бути трохи коротшими, наприклад, програми з відзнакою університетського бакалавра зазвичай становлять 4 роки, тоді як програма диплому коледжу може становити 18-24 місяці. Таким чином, проблема полягає в тому, щоб отримати цю частину, щоб мати зв'язки з компаніями, щоб люди могли піддаватися впливу роботи і бачити, що для них працює чи що не працює.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.