ใครสามารถเรียนรู้การเขียนโปรแกรม [ปิด]


17

ฉันลังเลเสมอเมื่อพูดคุยกับอาจารย์เกี่ยวกับการพยายามปรับปรุงเปอร์เซ็นต์ของผู้ที่สำเร็จการศึกษาระดับปริญญา CS โดยเปรียบเทียบกับจำนวนที่เริ่มคิดว่าเป็นสิ่งที่พวกเขาต้องการ ในแง่หนึ่งฉันคิดว่าเป็นเรื่องสำคัญที่ผู้เชี่ยวชาญจะต้องมีส่วนร่วมและให้ข้อเสนอแนะนี้ในทางกลับกันมันจะดีกว่าหากนักเรียนย่อยน้อยกว่าจบการศึกษาระดับปริญญา CS

ฉันไม่คิดว่าจิตใจทุกคนจะถูกสร้างขึ้นสำหรับสาขานี้และคุณจะต้องเป็นนักเรียนที่ดีในชีวิต คุณต้องมีความอดทนในระดับสูงและทักษะการแก้ปัญหาเพียงเพื่อ หากคุณมีสมองที่ "ถูกต้อง" ปัญหาที่ยากเหล่านั้นคือสิ่งที่ผลักดันให้คุณดำเนินการต่อ หากคุณเพิ่งได้รับรายการปัญหาง่าย ๆ มากมายที่คุณเบื่อดังนั้นคนเหล่านี้ไม่เก่งในงานซ้ำ ๆ ฉันไม่จำเป็นต้องพูดถึงรายละเอียดทั้งหมด ... หากคุณอ่านสิ่งนี้คุณอาจรู้ว่าฉันกำลังทำอะไรอยู่

ดังนั้นคำถามคือคุณจะพบความสมดุลของหลักสูตรปริญญาที่เข้าถึงได้โดยผู้คนมากพอที่จะได้รับเงินทุนและได้รับการพิจารณาว่าประสบความสำเร็จ แต่ยังไม่กลายเป็นคนที่ไม่ได้ถูกตัดออกจากงานจริงๆ อาจเป็นคำถามที่ดีกว่าคือคุณใช้เมตริกใดเพื่อทราบว่าการเปลี่ยนแปลงที่คุณทำในหลักสูตรปริญญาจะทำให้ดีขึ้นหรือไม่ ฉันไม่รู้ว่าอัตราการจบการศึกษาที่สูงขึ้นเป็นตัวชี้วัดที่ดี และดูเหมือนว่าข้อเสนอแนะที่คุณสามารถลองได้ในอีกหลายปีต่อมาเกี่ยวกับงานที่ผู้สำเร็จการศึกษามีความล่าช้ามากเกินไป

ฉันต่อสู้กับคำถามนี้มานานแล้วส่วนใหญ่เป็นเพราะฉันไม่คิดว่าจะมีคำตอบ แต่ฉันคิดว่าฉันขอให้ดูว่าใครรู้การวิจัยใด ๆ ที่ได้ทำจริง

นอกจากนี้เมื่อเร็ว ๆ นี้ฉันมีศาสตราจารย์ที่ชาญฉลาดมากเตือนฉันว่าไม่ใช่ทุกคนที่สำเร็จการศึกษาระดับปริญญา CS หรือแม้กระทั่งต้องการเป็นโปรแกรมเมอร์เต็มเวลาเมื่อพวกเขาค้นพบความหมายที่แท้จริง แต่ด้วยการศึกษาที่พวกเขาได้รับพวกเขาสามารถสร้างผู้จัดการโครงการผู้จัดการผู้ดูแลระบบและอื่น ๆ ได้ฉันคิดว่านี่เป็นจุดที่ดีมากที่ฉันไม่ได้คิดที่จะพิจารณาที่นี่ มีเปอร์เซ็นต์สูงมากของคนที่ไม่ได้ทำงานในสาขาที่พวกเขาเรียนวิชาอยู่ CS ไม่ได้เป็นข้อยกเว้น การมีคนพิเศษไม่เพียงช่วยในเรื่องงบประมาณสำหรับปริญญาเท่านั้น แต่ยังเพื่อขยายเปอร์เซ็นต์ของผู้ที่ไม่ใช่โปรแกรมเมอร์ซึ่งยังคงมีความรู้เพียงพอเกี่ยวกับการทำงานกับโปรแกรมเมอร์


@ Job- ขอบคุณนั่นเป็นจุดที่ดีและทำให้ฉันรู้สึกดีขึ้นมาก
Beth Whitezel

2
@job: พูดเป็นหลักจิตวิทยาตอนนี้การเขียนโปรแกรมเครื่อง NMR ฉันสามารถยืนยันได้ว่า
Matt Ellen

คำตอบ:


33

ตกลงตามความต้องการที่เป็นที่นิยม ... ปล่อยให้ตลาดเสรีคิดออก คุณรู้ไหมว่า 95% ของวิชาเอกจิตวิทยาจบลงด้วยการทำอย่างอื่น ไม่ใช่ทุกคนที่มีระดับ CS / ผู้เยาว์จบลงด้วยการเขียนโปรแกรม แต่พวกเขาทำให้ผู้จัดการนักวิเคราะห์ผู้จัดการโครงการดีกว่าที่ไม่มี อย่าแบกน้ำหนักของโลกไว้บนบ่าของคุณ CS degree เป็นเพียงกระดาษแผ่นหนึ่ง ผู้ที่มีวิชาคณิตศาสตร์ฟิสิกส์เคมีชีววิทยาระดับก็จะกลายเป็นโปรแกรมเมอร์และไม่ใช่ทุกคนที่มีปริญญา CS จะกลายเป็นโปรแกรมเมอร์ หากไม่มีเด็กหลายล้านคนที่ปรารถนาจะเป็นนักเบสบอลที่ดีที่สุดเราคงไม่มีดวงดาวที่ยอดเยี่ยม ระบบมีการควบคุมตนเอง


ฉันเห็นด้วยบ้าง แต่ฉันก็ต้องสนับสนุนรหัสที่เขียนโดยคนที่มีปริญญาในสาขาฟิสิกส์คณิตศาสตร์และวิศวกรรมเครื่องกลที่คิดว่าพวกเขาเป็นโปรแกรมเมอร์ เพียงเพราะมีคนทำอะไรบางอย่างเพื่องานของพวกเขาไม่ได้หมายความว่าพวกเขาทำได้ดี ...
Joel C

7
ฉันเห็นโค้ดที่ไม่ดีมากมายที่เขียนโดยนักเรียน CS ฉันเห็นโค้ดที่น่าอัศจรรย์เขียนโดยผู้คนจากคณิตศาสตร์หรือฟิสิกส์หรืออะไรก็ตาม ไม่มีความสัมพันธ์ระหว่างสิ่งที่คุณศึกษากับคุณภาพของรหัสของคุณ
jhocking

1
ยังไปชีววิทยา!
jhocking

11

ในขณะที่ฉันคิดว่าคำตอบของงานเป็นสิ่งสำคัญที่ต้องจำไว้คำตอบเดียวกันสามารถนำไปใช้กับโรงสีองศา "ฉันจ่ายเงิน $ 199.95 ตอนนี้ฉันจะได้ปริญญา CS ของฉัน"

การให้ความรู้แก่นักเรียนตามมาตรฐานว่า "โปรแกรมเมอร์จริง" คืออะไรไม่ใช่งานของคุณ การสอนนักเรียนเกี่ยวกับวิธีการโปรแกรม / การออกแบบคือ (สมมุติ?) ถ้าคุณไม่เปลี่ยนวิธีคิดในวิทยาลัยคุณเสียเวลาไปกับการเรียน เป้าหมายของคุณคือแสดงให้นักเรียนคนใดที่แสดงความสนใจว่าการเป็นโปรแกรมเมอร์เปลี่ยนวิธีคิดให้ดีขึ้น คุณทำแบบนั้นโดยการแสดง ...

  1. การเขียนโปรแกรมคืออะไรและ ...
  2. ที่พวกเขาสามารถทำได้

เราทำผิด

มีงานวิจัยมากมายที่แสดงให้เห็นว่า 95% ของโปรแกรมวิทยาลัยของเราสอนการเขียนโปรแกรม / CS นั้นแย่มาก โปรแกรม CS เฉลี่ยเริ่มต้นด้วย

  • ภาคเรียนของการเขียนโปรแกรมขั้นพื้นฐานใน C ++ / Java / C # ซึ่งใช้เวลา 16 สัปดาห์ในการสอนบางสิ่งที่สูงกว่า "นี่คือการวนซ้ำ" การเปรียบเทียบอาจเป็นไปได้ว่าภาควิชาฟิสิกส์ใช้เวลาภาคการศึกษาอักษรกรีกก่อนเริ่มการเคลื่อนไหว
  • ภาคเรียนที่สองน้องใหม่ได้เข้าสู่โครงสร้างข้อมูลพื้นฐานและมักจะทิ้งไว้ข้างหลัง 1/3 ถึงครึ่งของนักเรียน
  • ปีที่สองใช้เวลาในการรวมกันของการประกอบโครงสร้างข้อมูลการวิเคราะห์อัลกอริทึมหลักสูตรจริยธรรมและอาจเป็นหลักสูตรเฉพาะครั้งแรกของคุณ คุณมักจะสูญเสียนักเรียนที่เข้ามาอีกครึ่งหนึ่งในปีนี้
  • จูเนียร์และผู้สูงอายุได้เข้าเรียนพร้อมชื่อเช่น "กราฟิก", "เครือข่าย I และ II", "ระบบปฏิบัติการ" และเป็นเนื้อหาแรกที่น่าสนใจจริง ๆ ที่นักเรียนจะได้เห็น

เกือบทุกอย่างจะดีกว่า

เกือบทุกการทดลองช่วยปรับปรุงสถานการณ์โดยวัดจากความเข้าใจของนักเรียนในหัวข้อและการลงทะเบียนโปรแกรมและอัตราการสำเร็จการศึกษา การทดลองบางอย่างที่ฉันเคยเห็นในวารสารของACM CSEคือ ...

  • สร้างจากเครื่องจักรสถานะทางทฤษฎีที่ง่ายมากไปจนถึงการประกอบและไปยัง C ซึ่งลงท้ายด้วย C # / Java ในปีสุดท้ายของคุณ โฟกัสอยู่ที่ค่อย ๆ คลานขึ้นเลเยอร์ของสิ่งที่เป็นนามธรรม
  • การเลือกภาษาที่ "เรียบง่าย" มากเพื่อมุ่งเน้นนักเรียนเกี่ยวกับโครงสร้างข้อมูลและสิ่งที่เป็นนามธรรม ฉันเห็นผลลัพธ์ที่ดีกับนักเรียนที่เขียนเว็บแอพที่ค่อนข้างซับซ้อนในรูปแบบที่แตกต่างกันภายในสิ้นปีแรก (มันเป็นวิกิที่ได้รับการแก้ไขซึ่งจะเรียกใช้ข้อความของเพจผ่านแบบแผนก่อนที่จะแสดง ... สนุก ... sorta
  • มุ่งเน้นการเริ่มต้นนักเรียนในพื้นที่เฉพาะ (ระบบเครือข่าย) และการสอนโครงสร้าง / คำสั่ง Java ทั้งหมดเป็น "กัน" นักเรียนสัปดาห์ที่สอง ping เซิร์ฟเวอร์อีเมลเพื่อดูรายการอีเมลของพวกเขาโครงการสุดท้ายเป็นโปรแกรม IM ที่เรียบง่าย จุดเน้นคือการแสดงให้นักเรียนเห็นว่าโปรแกรมเมอร์ทำให้ส่วนหนึ่งของโลกทำงานอย่างไร
  • บางโปรแกรมเน้นไปที่หุ่นยนต์ น้องใหม่เล่นกับ Lego Mindstorms ... นักเรียนรุ่นพี่ใช้ API แบบ C-Juniors และ Seniors ทำงานร่วมกับ ME's และ EE ในการทำงานร่วมกันข้ามวิทยาเขตเพื่อสร้างระบบที่ค่อนข้างซับซ้อน
  • โปรแกรมหนึ่งมุ่งเน้นให้นักเรียนอ่านโค้ดสำหรับครึ่งภาคการศึกษาแรก พวกเขาวิเคราะห์รหัสในระบบ X11 เพื่อสอนการควบคุมการไหลและไวยากรณ์พื้นฐานเป็นเวลา 8 สัปดาห์หรือมากกว่านั้นก่อนที่จะเริ่มเขียนโค้ด โปรแกรมแรกของพวกเขาคือโปรแกรมแก้ไขเล็ก ๆ เพื่อปรับเปลี่ยนพฤติกรรมเล็กน้อย

ทุกการทดลองเหล่านี้เห็นการพัฒนาอย่างมากในเรื่องความสนใจเริ่มต้นของนักเรียนการถ่ายทอดความรู้และการเก็บรักษาจนถึงการสำเร็จการศึกษา บางคนมีความเหมาะสมมากกว่าสำหรับสภาพแวดล้อมในวิทยาลัยบางแห่งกว่าคนอื่น ๆ แต่ถ้าคุณทำตามโครงสร้างที่อธิบายไว้ในวรรคข้างต้นถามตัวเองว่า "ฉันจะติดอยู่กับโปรแกรมสองปีแรกนี้ไหม


ฉันเห็นด้วยกับคุณว่าเราควรมุ่งเน้นที่จะแสดงให้พวกเขาเห็นว่าการเขียนโปรแกรมเป็นเรื่องเกี่ยวกับอะไรและจะสามารถเปลี่ยนกระบวนการคิดของคุณได้อย่างไรโดยไม่คำนึงถึงสิ่งที่คุณทำหลังจากนั้น ความคิดที่ดี
Beth Whitezel

2

โปรแกรมคือการสอนในลักษณะที่เป็นตรรกะเพื่อให้ได้ผลลัพธ์ที่ต้องการ กล่าวอีกอย่างหนึ่งก็คือการบอกให้คอมพิวเตอร์ทำงานบางอย่าง วิธีเดียวที่จะก้าวไปข้างหน้าคือการฝึกฝน

เช่นเดียวกับการเรียนรู้ภาษาอังกฤษหรือภาษาอื่น ๆ ที่คุณต้องเริ่มต้นด้วยการเรียนรู้ไวยากรณ์ (ตัวอักษร) จากนั้นไปยังไวยากรณ์และโครงสร้างอื่น ๆ จำนวนเวลาที่ใช้จะแตกต่างกันไปขึ้นอยู่กับความซับซ้อนของภาษา การเขียนโปรแกรมในภาษาระดับที่สูงขึ้นเช่น SQL, งูหลามเป็นเกือบเช่นการเขียนภาษาอังกฤษ


2

บางประเด็นจะช่วยฉันคิดว่า -

  • ศาสตราจารย์ที่ตระหนักถึงโลกแห่งความจริงสมัยใหม่ หากพวกเขาสามารถพูดคุยเกี่ยวกับเทคโนโลยีปัจจุบันและวิธีการที่เหมาะสมกับกรอบทฤษฎีที่เกี่ยวข้องกับการ undergrads ไม่รู้ประวัติศาสตร์กว่าการแยก VAXen โดยไม่ต้องอ้างอิงถึงเทคโนโลยีปัจจุบัน

  • การฝึกงานที่แผนกสนับสนุน หากแผนกสามารถรับประกันได้ว่าอย่างน้อย 2 ฤดูร้อนของการทำงานที่ได้รับค่าจ้างกับ บริษัท เทคโนโลยี

นักศึกษาวิทยาศาสตร์คอมพิวเตอร์ที่ทันสมัยมีความสุขมากกว่านักเรียนที่อยู่ในช่วง 5-10 ปีที่ผ่านมา ความสามารถในการซื้อระบบต่ำสุดจากนั้นติดตั้ง VM และเรียนรู้หลายภาษาระบบปฏิบัติการและอื่น ๆฟรีเป็นตัวเปิดใช้งานซึ่งยากที่จะกล่าวเกินจริง

แน่นอนว่าคนเชื้อเชิญอย่างฮ็อปเปอร์และนูทนั้นสอนตัวเองโดยไร้เงางาม อัจฉริยะจะออกมา


ในขณะที่ความคิดที่ดี ... สองฤดูร้อนของการทำงานแยกจ่ายเงินรับประกันโชคไม่ดีจริง ใช่มีการฝึกงาน แต่ส่วนใหญ่โชคดีที่ได้รับการชำระเงินทันทีและมักจะต้องชำระค่าจ้าง สิ่งนี้อาจแตกต่างจากรัฐอื่น ฉันคิดว่าคุณถูกต้องเกี่ยวกับพวกเขาที่มีโอกาสมากขึ้น พวกเขาสามารถมีส่วนร่วมในโครงการโอเพ่นซอร์สอื่น ๆ อีกมากมายหลังจากนั้นไม่กี่ปีที่ผ่านมาเช่นกัน
Beth Whitezel

@ BitOff: ฉันไม่เคยได้ยินการฝึกงาน CS ที่ค้างชำระ
พอลนาธาน

ไม่ได้ล้อเล่น? มันจะต้องเป็นสิ่งที่มีการแปลแล้ว
Beth Whitezel

1

สร้างพื้นที่สำหรับนักเรียนที่มีศักยภาพและประสบความสำเร็จนอกหลักสูตรปริญญาของคุณเพื่อลดความเสี่ยง ซึ่งอาจรวมถึงการสนับสนุนชั้นเรียน AP CompSci ในโรงเรียนมัธยมท้องถิ่นเพื่อแยกข้าวสาลีออกจากแกลบ หากสิ่งนี้กลายเป็นเรื่องยากเกินไปให้ลองแทรกซึมบท DECA ในพื้นที่ (หรือสร้างขึ้นใหม่) ด้วยโปรแกรม CS oriented ในโรงเรียนมัธยมหรือวิทยาลัย ในทางกลับกันคุณจะแสดงให้ผู้ประกอบการที่กำลังมองหาทักษะการจัดการอาจมีศักยภาพ CS ที่ไม่เกิดขึ้นจริงซึ่งเป็นเส้นทางใหม่ในการเติมเต็มแรงบันดาลใจทางธุรกิจผ่านสื่อการเรียนของคุณ


ใช่ฉันเห็นด้วยอย่างสมบูรณ์ว่าเราจำเป็นต้องทำมากขึ้นเพื่อแนะนำ CS ในวัยก่อนหน้านี้แล้ววิทยาลัย ฉันรู้ว่าโรงเรียนมัธยมส่วนใหญ่มีชั้นเรียนคอมพิวเตอร์ขั้นสูงหนึ่งหรือสองชั้นที่สามารถใช้ภาษาโปรแกรมได้ แต่ฉันคิดว่าไม่เพียงพอ ฉันมักจะคิดว่าถ้าคุณสามารถสอนภาษาที่ง่ายและเป็นมิตรกับเด็กถึงคารมที่ 4-6 คุณจะได้รับความสนใจในช่วงอายุที่เหมาะสม ฉันเรียนรู้พื้นฐานครั้งแรกเมื่อฉันอายุ 8 หรือ 9 ปีและแม้ว่าฉันจะต้องใช้เวลาอีก 10 ปีหรือมากกว่านั้นในการทำสิ่งเหล่านี้
Beth Whitezel

1

ฉันขอยืนยันว่ากุญแจสำคัญคือการเข้าใจในระดับต่าง ๆ ของโปรแกรมดังกล่าว:

มหาวิทยาลัย - สิ่งนี้มีแนวโน้มที่จะเป็นที่หนึ่งที่สามารถศึกษาเพียงเพื่อการศึกษา ในกรณีนี้อาจมีมาตรฐานที่แตกต่างกันอย่างมากในแง่ของการสร้างโปรแกรมและปรับพวกเขาเนื่องจากนี่อาจเป็นเชิงทฤษฎีหรืออย่างน้อยนั่นก็คือสิ่งที่ฉันจำได้จากการเรียนวิทยาศาสตร์คอมพิวเตอร์ในหลักสูตรชั้นปีที่แล้ว

วิทยาลัย - สิ่งเหล่านี้มีแนวโน้มที่จะมุ่งเน้นด้านอาชีพมากขึ้นซึ่งเป็นจุดที่ความคิดเห็นจากอุตสาหกรรมและการเชื่อมโยง บริษัท กับวิทยาลัยเป็นจุดสำคัญ การมองหาตำแหน่ง 6-12 เดือนหลังจากสำเร็จการศึกษาอาจเป็นตัวชี้วัดที่ใช้ในการดูว่าผู้คนทำได้ดีเพียงใดหลังจบการศึกษาเนื่องจากคำถามสำคัญคือมีคนดูเวลาและเงินของพวกเขาเพื่อรับการศึกษาที่คุ้มค่าหรือไม่ การอัปเดตโปรแกรมมีแนวโน้มที่จะเกิดขึ้นบ่อยขึ้นเนื่องจากโปรแกรมที่นี่อาจจะสั้นกว่านี้เล็กน้อยเช่นหลักสูตรปริญญาตรีเกียรตินิยมจากมหาวิทยาลัยซึ่งมีระยะเวลา 4 ปีในขณะที่หลักสูตรประกาศนียบัตรวิทยาลัยอาจมีอายุ 18-24 เดือน ดังนั้นความท้าทายจึงมีมากขึ้นเมื่อได้รับส่วนนี้เพื่อติดต่อกับ บริษัท ต่างๆเพื่อให้ผู้คนได้สัมผัสกับงานและดูว่าอะไรทำงานหรือไม่ได้ผลสำหรับพวกเขา

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.