Ai có thể học lập trình? [đóng cửa]


17

Tôi luôn do dự khi nói chuyện với các giáo sư về việc cố gắng cải thiện tỷ lệ phần trăm những người tốt nghiệp với bằng cấp loại CS so với con số bắt đầu nghĩ rằng đó là điều họ muốn. Một mặt tôi thực sự nghĩ rằng điều quan trọng là các chuyên gia phải tham gia và đưa ra phản hồi này, mặt khác sẽ tốt hơn nếu ít sinh viên phụ hơn kết thúc với bằng CS.

Tôi không nghĩ rằng mọi tâm trí đều được xây dựng cho lĩnh vực này và bạn phải là một sinh viên tốt lâu dài. Bạn phải có một mức độ kiên nhẫn và kỹ năng giải quyết vấn đề cao chỉ để vượt qua. Nếu bạn có loại não "đúng", những vấn đề khó khăn đó là điều thúc đẩy bạn tiếp tục. Nếu bạn chỉ nhận được một danh sách dài các vấn đề dễ dàng bạn cảm thấy buồn chán thì những người này thực sự không giỏi trong các công việc lặp đi lặp lại nhiều hơn. Tôi không cần phải đi sâu vào tất cả các chi tiết ... nếu bạn đang đọc bài này, bạn có thể biết tôi đang làm gì.

Vì vậy, câu hỏi là: Làm thế nào để bạn tìm thấy sự cân bằng của một chương trình cấp bằng có thể truy cập đủ để mọi người được tài trợ và được coi là thành công nhưng cũng không hóa ra những người không thực sự bỏ việc? Có lẽ một câu hỏi tốt hơn là, bạn sử dụng số liệu nào để biết liệu những thay đổi bạn đang thực hiện trong một chương trình cấp bằng có làm cho nó tốt hơn không? Tôi không biết rằng tỷ lệ tốt nghiệp cao hơn là một số liệu tốt. Và dường như những phản hồi mà bạn có thể cố gắng nắm bắt nhiều năm sau về những công việc mà sinh viên tốt nghiệp nắm giữ sẽ bị trì hoãn quá xa.

Tôi đã vật lộn với câu hỏi này trong một thời gian dài, chủ yếu là vì tôi không nghĩ có câu trả lời. Nhưng tôi nghĩ tôi sẽ hỏi xem có ai biết về bất kỳ nghiên cứu nào thực sự được thực hiện trên đó không.

Ngoài ra, gần đây tôi có một giáo sư rất khôn ngoan nhắc nhở tôi rằng không phải ai tốt nghiệp bằng CS cũng muốn trở thành lập trình viên toàn thời gian một khi họ thực sự khám phá ra điều đó có nghĩa là gì. Nhưng, với nền giáo dục mà họ nhận được, họ có thể tạo ra những Người quản lý dự án, Người quản lý, quản trị viên hệ thống tuyệt vời, v.v. Tôi nghĩ rằng đây là một điểm rất tốt mà tôi đã nghĩ đến việc xem xét ở đây. Có một tỷ lệ rất cao những người cuối cùng không làm việc trong lĩnh vực mà họ theo học, CS không phải là ngoại lệ. Có thêm người giúp đỡ không chỉ về ngân sách cho bằng cấp mà còn mở rộng tỷ lệ phần trăm những người không lập trình viên vẫn biết đủ về nó để làm việc với các lập trình viên.


@ Công việc- Cảm ơn, đó là một điểm tuyệt vời và làm cho tôi cảm thấy tốt hơn rất nhiều.
Beth Whitezel

2
@job: nói như một chuyên gia tâm lý, bây giờ lập trình máy NMR, tôi có thể chứng thực điều đó.
Matt Ellen

Câu trả lời:


33

Ok, bởi nhu cầu phổ biến ... Hãy để thị trường tự do tìm ra nó. Bạn biết đấy, 95% chuyên ngành tâm lý học cuối cùng đã làm một việc khác. Không phải tất cả mọi người có bằng cấp / kết thúc CS đều lập trình, nhưng họ làm cho các nhà quản lý, nhà phân tích, quản lý dự án tốt hơn những người không có. Đừng mang trọng lượng của thế giới trên vai bạn. Bằng cấp CS chỉ là một mảnh giấy. Những người có trình độ toán, vật lý, hóa học, sinh học tiếp tục trở thành lập trình viên và không phải ai có bằng CS cũng trở thành lập trình viên. Không có hàng triệu trẻ em khao khát trở thành cầu thủ bóng chày giỏi nhất, chúng ta sẽ không có những ngôi sao tuyệt vời như vậy. Hệ thống tự điều chỉnh.


Tôi đồng ý ở một mức độ nào đó, nhưng tôi cũng đã phải hỗ trợ mã được viết bởi những người có bằng cấp về vật lý, toán học và kỹ thuật cơ khí, những người nghĩ rằng họ là lập trình viên. Chỉ vì ai đó làm điều gì đó cho công việc của họ không có nghĩa là họ làm tốt ...
Joel C

7
Tôi đã thấy rất nhiều mã xấu được viết bởi các sinh viên CS. Tôi đã thấy mã tuyệt vời được viết bởi những người từ toán học hoặc vật lý hoặc bất cứ điều gì. Có khá nhiều không có mối tương quan giữa chính xác những gì bạn đã nghiên cứu và chất lượng mã của bạn.
jhocking

1
Ngoài ra, đi sinh học!
jhocking

11

Mặc dù tôi nghĩ rằng câu trả lời của Gióp rất quan trọng cần ghi nhớ, nhưng câu trả lời tương tự có thể được áp dụng cho nhà máy độ. "Tôi đã trả 199,95 đô la, bây giờ hãy cho tôi bằng CS."

Giành chiến thắng trong cơ thể sinh viên theo một tiêu chuẩn của "lập trình viên thực sự" không thực sự là công việc của bạn. Dạy học sinh cách lập trình / thiết kế (có lẽ?). Nếu bạn không thay đổi cách suy nghĩ ở trường đại học, bạn đã lãng phí thời gian ở đó. Mục tiêu của bạn là cho thấy bất kỳ sinh viên nào thể hiện sự quan tâm rằng việc trở thành một lập trình viên sẽ thay đổi cách suy nghĩ của họ tốt hơn. Bạn làm điều đó một cách gián tiếp bằng cách cho họ thấy ...

  1. lập trình thực sự là gì và ...
  2. rằng họ có thể làm điều đó.

Chúng tôi làm sai

Có nhiều nghiên cứu ngoài kia cho thấy cách 95% các chương trình đại học của chúng tôi dạy lập trình / CS là khủng khiếp. Chương trình CS trung bình bắt đầu với

  • Một học kỳ lập trình cơ bản trong C ++ / Java / C #, dành 16 tuần để dạy một vài điều nâng cao hơn so với "đây là một vòng lặp". Một sự tương tự có thể là nếu khoa Vật lý dành một học kỳ nghiên cứu bảng chữ cái Hy Lạp trước khi bắt đầu động học.
  • Học kỳ năm thứ hai vào các cấu trúc dữ liệu cơ bản và thường hoàn toàn bỏ lại 1/3 đến một nửa số sinh viên.
  • Năm thứ hai được dành cho một số sự kết hợp của lắp ráp, cấu trúc dữ liệu, phân tích thuật toán, một khóa học đạo đức và có thể là khóa học chuyên đề đầu tiên của bạn. Bạn có xu hướng mất một nửa số sinh viên sắp tới trong năm nay.
  • Người cao niên và người cao niên được vào các lớp học với các tên như "Đồ họa", "Mạng I và II", "Hệ điều hành" và đó là tài liệu thực sự thú vị đầu tiên mà học sinh được nhìn thấy.

Hầu như bất cứ điều gì khác là tốt hơn

Hầu như bất kỳ thí nghiệm nào đều cải thiện tình hình, được đo lường về mặt hiểu biết của sinh viên về các chủ đề VÀ tuyển sinh chương trình VÀ tỷ lệ tốt nghiệp. Một số thí nghiệm tôi đã thấy trong các tạp chí của ACM CSE là ...

  • Xây dựng từ các máy trạng thái lý thuyết rất đơn giản để lắp ráp và chuyển sang C, kết thúc bằng C # / Java trong năm cuối của bạn. Trọng tâm là từ từ bò lên các lớp trừu tượng.
  • Chọn một ngôn ngữ rất "đơn giản" để tập trung học sinh vào cấu trúc dữ liệu và trừu tượng hóa. Tôi đã thấy kết quả tốt với các sinh viên viết các ứng dụng web khá phức tạp trong một biến thể chương trình vào cuối năm thứ nhất. (Đó là một wiki được sửa đổi sẽ chạy văn bản trang thông qua lược đồ trước khi hiển thị ... vui nhộn)
  • Tập trung học sinh bắt đầu vào một lĩnh vực cụ thể (kết nối mạng) và dạy mọi cấu trúc / câu lệnh Java như là một "bên". Sinh viên tuần thứ hai ping máy chủ thư để xem danh sách email của họ, dự án cuối cùng là một ứng dụng khách IM đơn giản. Trọng tâm là cho sinh viên thấy các lập trình viên làm cho một phần của thế giới hoạt động như thế nào.
  • Một số chương trình tập trung vào robot. Sinh viên năm nhất chơi với những cơn bão Lego ... sinh viên năm hai sử dụng API giống như C, Người cao niên và Người cao niên làm việc với ME và EE trong một sự hợp tác giữa các trường để xây dựng các hệ thống khá phức tạp.
  • Một chương trình tập trung học sinh vào mã ĐỌC trong nửa học kỳ đầu tiên. Họ phân tích mã trong hệ thống X11 để dạy điều khiển luồng và cú pháp cơ bản trong 8 tuần hoặc lâu hơn trước khi bắt đầu viết mã. Các chương trình đầu tiên của họ là các bản vá nhỏ để sửa đổi một chút hành vi.

Mỗi một trong những thí nghiệm này đều chứng kiến ​​sự cải thiện lớn về sự quan tâm ban đầu của sinh viên, chuyển giao kiến ​​thức và duy trì cho đến khi tốt nghiệp. Một số phù hợp với một số môi trường đại học nhất định so với các môi trường đại học khác, nhưng nếu bạn đang theo cấu trúc được mô tả trong đoạn trên, hãy tự hỏi: "Tôi sẽ gắn bó trong hai năm đầu tiên của chương trình này?"


Tôi đồng ý với bạn rằng chúng ta nên tập trung vào việc cho họ thấy chương trình là gì và làm thế nào nó có thể thay đổi quá trình suy nghĩ của bạn bất kể bạn làm gì sau đó. Suy nghĩ tốt.
Beth Whitezel

2

Để lập trình là hướng dẫn một cách hợp lý để đạt được một số đầu ra mong muốn. Nói cách khác, nó đang bảo máy tính thực hiện một số nhiệm vụ. Cách duy nhất để tiến về phía trước là bằng cách thực hành.

Cũng giống như học tiếng Anh hoặc bất kỳ ngôn ngữ nào khác, bạn cần bắt đầu bằng cách học cú pháp (bảng chữ cái) và sau đó chuyển sang ngữ pháp và các cấu trúc khác. Lượng thời gian cần thiết khác nhau tùy thuộc vào độ phức tạp của ngôn ngữ. Viết mã bằng các ngôn ngữ cấp cao hơn như SQL, Python gần giống như viết tiếng Anh.


2

Một vài khía cạnh sẽ giúp ích, tôi nghĩ -

  • Giáo sư nhận thức được thế giới thực hiện đại . Nếu họ có thể nói về công nghệ hiện tại và cách nó phù hợp với các khung lý thuyết, thì điều đó phù hợp hơn nhiều với các sinh viên không biết về lịch sử so với việc mổ xẻ VAXen mà không cần tham khảo công nghệ hiện tại.

  • Thực tập do bộ phận hỗ trợ. Nếu bộ phận có thể đảm bảo ít nhất 2 mùa hè làm việc được trả lương với các công ty công nghệ, thì đó là một động lực lớn để gắn bó.

Thành thật mà nói, sinh viên khoa học máy tính hiện đại may mắn hơn nhiều so với những người sống cách đây 5-10 năm. Khả năng mua một hệ thống cấp thấp, sau đó cài đặt VM và học nhiều ngôn ngữ, hệ điều hành, v.v., miễn phí là một yếu tố hỗ trợ, thật khó để nói quá.

Tất nhiên, những người có tinh thần như Hopper và Knuth đã tự dạy mình mà không cần các thiên thần. Thiên tài sẽ ra.


Trong khi ý tưởng là tuyệt vời ... hai mùa hè của công việc giao nhau được trả tiền được đảm bảo là không may thực tế. Vâng, có những kỳ thực tập có lương nhưng hầu hết sinh viên tốt nghiệp đều may mắn nhận được một khoản tiền ngay bây giờ và thường phải giải quyết cho việc không được trả lương. Điều này có thể khác nhau ở các tiểu bang khác. Tôi nghĩ rằng bạn đúng về việc họ có nhiều cơ hội hơn. Họ có thể đóng góp cho nhiều dự án nguồn mở hơn sau đó cũng có một vài năm trở lại.
Beth Whitezel

@Bit Offer: Tôi chưa bao giờ nghe nói về một kỳ thực tập CS không được trả lương.
Paul Nathan

Không đua đâu? Nó phải là một thứ địa phương sau đó.
Beth Whitezel

1

Tạo một khu vực tổ chức cho các sinh viên tiềm năng, thành công ngoài chương trình cấp bằng của bạn để giảm thiểu rủi ro. Điều này có thể bao gồm tài trợ cho các lớp AP CompSci tại các trường trung học địa phương để tách lúa mì ra khỏi vỏ. Nếu điều này trở nên quá khó khăn, hãy thử thâm nhập vào các chương DECA địa phương (hoặc tạo một chương mới) với chương trình định hướng CS trong các trường trung học hoặc đại học. Ngược lại, bạn sẽ cho thấy các sinh viên khởi nghiệp tìm kiếm các kỹ năng quản lý, có thể với tiềm năng CS chưa được thực hiện, một con đường mới để thực hiện nguyện vọng kinh doanh của họ thông qua phương tiện học tập của bạn.


Vâng, tôi hoàn toàn đồng ý rằng chúng ta cần phải làm nhiều hơn để giới thiệu CS ở độ tuổi sớm hơn sau đó vào đại học. Tôi biết rằng hầu hết các trường trung học đều cung cấp một hoặc hai lớp máy tính nâng cao có thể học ngôn ngữ lập trình nhưng tôi không nghĩ thế là đủ. Tôi thường nghĩ rằng nếu bạn có thể dạy một ngôn ngữ đơn giản, thân thiện với trẻ em cho học sinh lớp 4 đến lớp 6, bạn sẽ thu hút được sự quan tâm của chúng ở độ tuổi phù hợp. Lần đầu tiên tôi học cơ bản khi tôi 8 hoặc 9 tuổi và mặc dù tôi phải mất thêm 10 năm để thực sự hiểu về nó, điều đó đã để lại cho tôi một trí nhớ tuyệt vời về "lập trình".
Beth Whitezel

1

Tôi cho rằng chìa khóa là trong việc hiểu các cấp độ khác nhau của các chương trình như vậy:

Các trường đại học - Đây có xu hướng là nơi người ta có thể học chỉ vì mục đích học tập. Trong trường hợp này, một tiêu chuẩn rất khác có thể tồn tại về mặt tạo chương trình và điều chỉnh chúng vì điều này có thể khá lý thuyết, hoặc ít nhất đó là những gì tôi nhớ từ khi học Khoa học Máy tính trong các khóa học năm cuối.

Cao đẳng - Những xu hướng này có định hướng nghề nghiệp nhiều hơn, đó là nơi phản hồi từ ngành công nghiệp và kết nối các công ty với các trường cao đẳng là một điểm quan trọng. Nhìn vào các vị trí 6-12 tháng sau khi tốt nghiệp có thể là một số liệu được sử dụng để xem mọi người làm tốt như thế nào sau khi họ tốt nghiệp vì câu hỏi quan trọng là liệu ai đó xem thời gian và tiền của họ có được giáo dục như vậy hay không. Việc cập nhật chương trình có thể sẽ thường xuyên hơn vì các chương trình ở đây có thể ngắn hơn một chút, ví dụ các chương trình Cử nhân danh dự của trường đại học có xu hướng là 4 năm trong khi chương trình bằng tốt nghiệp đại học có thể là 18-24 tháng. Do đó, thách thức nhiều hơn là làm cho phần này có kết nối với các công ty để mọi người có thể tiếp xúc với công việc và xem những gì hoạt động hoặc không làm việc cho họ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.