Kimler programlamayı öğrenebilir? [kapalı]


17

Profesörlerle, CS tipi derece ile mezun olanların yüzdesini, istedikleri şey olduğunu düşünmeye başlayan sayıya göre artırmaya çalışmaktan çekiniyorum. Bir yandan profesyonellerin katılımının ve bu geri bildirimin önemli olduğunu düşünüyorum, öte yandan daha az alt-alt öğrencilerin CS dereceleri ile sonuçlanması daha iyi olurdu.

Her aklın bu alan için inşa edildiğini düşünmüyorum ve yaşam boyu iyi bir öğrenci olmalısınız. Sadece eek olmak için yüksek derecede sabır ve problem çözme becerilerine sahip olmalısınız. "Doğru" bir beyne sahipseniz, bu zor problemler sizi devam ettiren şeydir. Kolay sorunların uzun bir listesini alırsanız sıkılırsınız, bu insanlar aslında daha tekrarlayan işlerde iyi değildir. Tüm ayrıntılara girmeme gerek yok ... Eğer bunu okuyorsanız muhtemelen ne elde ettiğimi biliyorsunuzdur.

Öyleyse soru şu: Finanse edilecek ve başarılı kabul edilecek kadar insanın erişebildiği, ancak iş için gerçekten kesilmemiş olan insanların ortaya çıkmadığı bir lisans programının dengesini nasıl buluyorsunuz? Belki de daha iyi bir soru, bir lisans programında yaptığınız değişikliklerin bunu daha iyi hale getirip getirmediğini bilmek için hangi metriği kullanıyorsunuz? Daha yüksek bir mezuniyet oranının iyi bir metrik olduğunu bilmiyorum. Yıllar sonra mezunların sahip olduğu işler hakkında yakalamaya çalışabileceğiniz geri bildirimler çok gecikecek gibi görünüyor.

Uzun zamandır bu soru ile mücadele ettim, çünkü çoğunlukla bir cevap olduğunu düşünmüyorum. Ama aslında üzerinde yapılan herhangi bir araştırmayı bilen biri olup olmadığını görmek isteyeceğimi düşündüm.

Ek olarak: Kısa bir süre önce çok iyi bir profesörüm vardı ve bir CS derecesi ile mezun olan herkesin bunun ne anlama geldiğini keşfettikten sonra tam zamanlı bir programcı olmak istemediğini hatırlattım. Ancak, aldıkları eğitim ile büyük proje yöneticileri, yöneticileri, sistem yöneticileri vs. yapabilirler. Bence bu, burada düşünmeyi düşünmediğim çok iyi bir nokta. Uzmanlaştıkları alanda çalışmayan insanların çok büyük bir yüzdesi vardır, CS bunun bir istisnası değildir. Ekstra millete sahip olmak sadece derece için bütçede değil, aynı zamanda hala programcılar ile çalışmak için yeterince bilen programcı olmayanların yüzdesini genişletmeye yardımcı olur.


@ Job- Teşekkürler, bu harika bir nokta ve beni çok daha iyi hissettiriyor.
Beth Whitezel

2
@job: bir psikoloji uzmanı olarak konuşurken, şimdi NMR makinelerini programlayarak, bunu kanıtlayabilirim.
Matt Ellen

Yanıtlar:


33

Tamam, yoğun talep üzerine ... Serbest pazarın çözmesine izin verin. Biliyorsunuz, psikoloji bölümlerinin% 95'i sonunda başka bir şey yapıyor. CS derecesi / minör olan herkes programlamayı bitirmez, ancak onlar olmadan daha iyi yöneticiler, analistler, proje yöneticileri yaparlar. Dünyanın ağırlığını omuzlarınızda taşımayın. CS derecesi sadece bir kağıttır. Matematik, fizik, kimya, biyoloji derecelerine sahip olanlar programcı olmaya devam ederler ve CS derecesi olan herkes programcı olmaz. En iyi beyzbol oyuncusu olmak isteyen milyonlarca çocuk olmasaydı, böyle harika yıldızlarımız olmazdı. Sistem kendi kendini düzenler.


Bir dereceye kadar katılıyorum, ancak aynı zamanda fizik, matematik ve makine mühendisliği programcı olduklarını düşünen dereceler ile yazılan kodları da desteklemem gerekiyordu. Birisinin işi için bir şeyler yapması iyi yaptığı anlamına gelmez ...
Joel C

7
CS öğrencileri tarafından yazılmış çok sayıda kötü kod gördüm. Matematik ya da fizikten insanlar tarafından yazılmış inanılmaz kodlar gördüm. Tam olarak çalıştığınız şey ile kodunuzun kalitesi arasında hemen hemen hiçbir korelasyon yoktur.
jhocking

1
ayrıca biyoloji gidin!
jhocking

11

Job'un cevabının akılda tutulması önemli olduğunu düşünmeme rağmen, aynı cevap derece değirmenine de uygulanabilir. "199.95 dolarımı ödedim, şimdi bana CS derecemi ver."

Öğrenci gövdesini "gerçek programcıların" ne olduğuna dair bir standarda göre tanımlamak aslında sizin işiniz değildir. Öğrencilere nasıl programlanacağını / tasarlanacağını öğretmek (muhtemelen?). Üniversitede düşünme şeklinizi değiştirmediyseniz, orada zamanınızı boşa harcadınız. Amacınız, programcı olmanın daha iyi için düşünme şekillerini değiştirdiğine ilgi gösteren öğrencilere göstermektir. Bunu dolaylı olarak onlara göstererek yaparsın ...

  1. gerçekten programlama nedir ve ...
  2. bunu yapabilirler.

Yanlış yapıyoruz

Orada, kolej programlarımızın% 95'inin programlama / CS öğretme yönteminin korkunç olduğunu gösteren kapsamlı bir araştırma var. Ortalama bir CS programı

  • C ++ / Java / C # 'da temel programlama dönemi, 16 hafta "bu bir döngü için" daha az şey öğretmek için harcıyor. Bir benzetme, Fizik bölümünün kinematiğe başlamadan önce yunan alfabesini incelemek için bir dönem geçirmesi olabilir.
  • İkinci birinci sınıf dönemi temel veri yapılarına girer ve genellikle öğrencilerin 1 / 3'ü ile yarısını tamamen geride bırakır.
  • İkinci sınıf, montaj, veri yapıları, algoritmik analiz, etik kursu ve belki de ilk topikal kursunuzun bir kombinasyonunda geçirilir. Bu yıl içinde gelen öğrencilerinizin yarısını daha kaybetme eğilimindesiniz.
  • Gençler ve Yaşlılar "Grafik", "Ağ I ve II", "İşletim Sistemleri" gibi isimlerle derslere girerler ve öğrencilerin gördüğü ilk gerçekten ilginç materyal.

Neredeyse her şey daha iyi

Hemen hemen her deney, öğrencilerin konuları anlamalarına ve programlara kaydolma VE mezuniyet oranlarına göre ölçülen durumu iyileştirir. ACM CSE'nin dergilerinde gördüğüm deneylerden bazıları ...

  • Çok basit teorik durum makinelerinden montaja ve C'ye kadar, üst sınıfınızda C # / Java ile biten. Odak, soyutlama katmanlarını yavaşça taramaktır.
  • Öğrencileri veri yapılarına ve soyutlamaya odaklamak için çok "basit" bir dil seçmek. 1. sınıfın sonuna kadar bir program varyantında oldukça karmaşık web uygulamaları yazan öğrencilerle iyi sonuçlar gördüm. (Sayfa metnini göstermeden önce şema aracılığıyla çalıştıracak değiştirilmiş bir wiki idi ... sorta fun)
  • Başlangıç ​​öğrencilerini belirli bir alana odaklama (ağ oluşturma) ve her Java yapısını / ifadesini "bir kenara" olarak öğretme. İkinci hafta öğrencilerin e-postalarının listesini görmek için posta sunucusuna ping atma, son proje basit bir IM istemcisi. Odak nokta, öğrencilere programcıların dünyanın bir bölümünü nasıl işlediğini göstermektir.
  • Bazı programlar robotik üzerine odaklanır. Birinci sınıf öğrencisi Lego zihin fırtınası ile oynuyor ... sophomores, C benzeri API'yi kullanıyor, Gençler ve Yaşlılar, oldukça karmaşık sistemler oluşturmak için kampüsler arası bir işbirliği içinde ME ve EE'lerle birlikte çalışıyor.
  • Bir program, öğrencileri ilk yarı dönem için OKUMA koduna odaklar. Kod yazmaya bile başlamadan önce akış kontrolünü ve temel sözdizimini 8 hafta boyunca öğretmek için X11 sistemindeki kodu analiz ederler. İlk programları, biraz davranışı değiştirmek için küçük yamalardır.

Bu deneylerin her biri, öğrencinin ilk ilgisinde, bilgi transferinde ve mezuniyete kadar elde tutmada büyük gelişmeler gördü. Bazıları belirli kolej ortamları için diğerlerinden daha uygundur, ancak yukarıdaki paragrafta açıklanan yapıyı takip ediyorsanız, kendinize "Bu programın ilk iki yılı boyunca takılır mıyım?" Diye sorun.


Programlamanın ne hakkında olduğunu ve daha sonra ne yaparsanız yapın, düşünce sürecinizi nasıl değiştirebileceğini göstermeye odaklanmamız gerektiğine katılıyorum. İyi düşünceler.
Beth Whitezel

2

Programlamak, istenen çıktıyı elde etmek için mantıklı bir şekilde talimat vermektir. Başka bir deyişle, bilgisayara bir görev yapmasını söylüyor. İlerlemenin tek yolu pratik yapmaktır.

İngilizce veya başka bir dil öğrenmek gibi, sözdizimini (alfabe) öğrenerek başlamalı ve daha sonra dilbilgisi ve diğer yapılara geçmelisin. Gereken süre dilin karmaşıklığına bağlı olarak değişir. SQL gibi daha üst düzey dillerde kodlama yapan Python, neredeyse İngilizce yazmak gibidir.


2

Birkaç yönünün yardımcı olacağını düşünüyorum.

  • Modern gerçek dünyanın farkında olan profesörler . Mevcut teknoloji ve teorik çerçevelere nasıl uyduğu hakkında konuşabiliyorlarsa, bu, mevcut teknolojiye başvurmadan VAXen'in diseksiyonlarından çok, tarihten habersiz lisans öğrencileri ile çok daha alakalı.

  • Bölüm destekli stajlar. Eğer borç, teknoloji şirketleriyle en az 2 yaz ücretli çalışmayı garanti edebiliyorsa, etrafta dolaşmak için büyük bir teşvik var.

Açıkçası, modern bilgisayar bilimi öğrencileri 5-10 yıl önce yaşayanlardan çok daha kutsanmıştır. Yeteneği, düşük-uç sistemini satın alabilir ve ardından VM yüklemek ve vb birden çok dili, işletim sistemleri, öğrenmeye ücretsiz böyle bir imkan olan, onu abartmak zor.

Tabii ki, Hopper ve Knuth gibi seminal insanlar kendilerini parlatıcı olmadan öğrettiler. Dahi dışarı çıkacak.


Fikir harika olsa da ... garantili ücretli staj çalışması iki yaz talihsiz bir şekilde gerçekçi değil. Evet, ücretli stajlar var, ancak çoğu mezun şu anda bir tane ödediğinden şanslı ve çoğu zaman ücretsiz ödenmesi gerekiyor. Bu diğer eyaletlerde farklı olabilir. Bence onların daha fazla opsiyonu olmaları konusunda haklısın. Birkaç yıl önce de açık kaynak projelerine katkıda bulunabilirler.
Beth Whitezel

@BitOff: Ödenmemiş bir CS stajını hiç duymadım.
Paul Nathan

Şaka yapmıyorum? O zaman yerelleştirilmiş bir şey olmalı.
Beth Whitezel

1

Riski azaltmak için lisans programınızın dışındaki potansiyel, başarılı öğrenciler için bir hazırlık alanı oluşturun. Bu, buğdayı önceden samandan ayırmak için yerel liselerde AP CompSci sınıflarına sponsor olmayı içerebilir. Bu çok zorlaşırsa, lise veya üniversite bölümlerinde CS odaklı bir programla yerel DECA bölümlerine sızmayı (veya yeni bir bölüm oluşturmayı) deneyin. Tersine, yönetim becerilerini arayan girişimci öğrencilere, muhtemelen gerçekleşmemiş CS potansiyeli olan, akademik amaçlarınızla iş hedeflerini yerine getirmek için yeni bir yol göstereceksiniz.


Evet, CS'yi üniversiteden daha erken yaşlarda tanıtmak için daha fazla şey yapmamız gerektiğine tamamen katılıyorum. Çoğu okulun bir programlama diline girebilecek bir veya iki gelişmiş bilgisayar sınıfı sunduğunu biliyorum, ancak bunun yeterli olduğunu düşünmüyorum. Sıklıkla 4-6. Sınıf öğrencilerine basit, çocuk dostu bir dil öğretebilseydiniz, ilgilerini doğru yaşta yakalayacağınızı düşündüm. İlk önce 8 veya 9 yaşında temel öğrendim ve gerçekten içine girmek 10 yıl kadar sürmesine rağmen, beni "programlama" nın büyük bir anısına bıraktı.
Beth Whitezel

1

Anahtarın bu tür programların farklı seviyelerini anlamada olduğunu iddia ediyorum:

Üniversiteler - Burası sadece okumak uğruna çalışabileceği yer olma eğilimindedir. Bu durumda, program oluşturma ve onları ayarlama konusunda çok farklı bir standart olabilir, çünkü bu oldukça teorik olabilir, ya da en azından üst sınıf derslerimde Bilgisayar Bilimi dersinden hatırlıyorum.

Kolejler - Bunlar daha kariyer odaklı olma eğilimindedir, bu da sektörden gelen geri bildirimlerin ve şirketleri kolejlerle bağlantılandırmanın kilit noktasıdır. Mezuniyetten 6-12 ay sonra yerleşimlere bakmak, insanların mezun olduktan sonra ne kadar iyi performans gösterdiğini görmek için kullanılan bir metrik olabilir, çünkü kilit soru, birisinin bu eğitimi almaya değer ve zamanının paraya değer olup olmadığını görmesidir. Buradaki programlar biraz daha kısa olabileceğinden programın güncellenmesi daha sık olacaktır, örneğin üniversite Onur Lisans programları 4 yıl, bir üniversite diploma programı 18-24 ay olabilir. Bu nedenle, zorluk daha çok bu kısmın şirketlerle bağlantı kurmasıdır, böylece insanlar işe maruz kalabilir ve onlar için neyin işe yarayıp neyin işe yaramadığını görebilirler.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.