“ วิทยาการคอมพิวเตอร์! = วิศวกรรมซอฟต์แวร์” เป็นข้อแก้ตัวในการสอนการเขียนโปรแกรมไม่ดีหรือไม่?


23

เราทุกคนได้ยินมัน เมื่อใดก็ตามที่มีการอภิปรายเกี่ยวกับ CS จบที่มีทักษะการพัฒนาที่ไม่ดีใครบางคนก็บอกว่าในที่สุด

วิทยาศาสตร์คอมพิวเตอร์ไม่ใช่วิศวกรรมซอฟต์แวร์

ปัญหาที่ผมเห็นก็คือการเขียนโปรแกรมและการพัฒนาซอฟต์แวร์ที่มีการเรียนการสอนในหลักสูตร CS พวกเขามักจะสอนไม่ดี ถ้ามันถูกสอนแล้วทำไมไม่สอนมันให้ถูกต้องตั้งแต่ครั้งแรกล่ะ? * * * *

ดังนั้นฉันต้องการจะดูว่าความคิดเห็นของคำถาม 2 ข้อคืออะไร:

  1. CS! = SE โต้แย้งว่าเป็น copout หรือข้อแก้ตัวสำหรับการสอนทักษะการเขียนโปรแกรมที่ไม่เหมาะสม

  2. โดยไม่คำนึงถึงคำตอบของคุณสำหรับคำถาม 1; ถ้าคุณอยู่ในตำแหน่งที่มีอำนาจยิ่งใหญ่ในการตัดสินใจ: คุณจะเน้นการสอนที่เหมาะสมของการเขียนโปรแกรมในหลักสูตร CS หรือไม่?

* * * * ฉันมีข้อสงสัยตามหลักฐานประวัติที่ฉันได้รับตลอดการศึกษาของฉันว่านักวิชาการส่วนใหญ่ไม่จำเป็นต้องเขียนรหัสเพื่อรักษาและไม่ได้รักษารหัสและทำให้ไม่มีความรู้ / ทักษะ เพื่อสอนอย่างมีประสิทธิภาพ


7
ฉันจะชี้แจงความคิดเห็นของฉัน; ในใจของฉันมันต่างกัน (CS! = SE) ดังนั้นถ้าฉันแทนที่ CS และ SE ด้วย 2 ฟิลด์อื่น A, B, ที่ A! = B คุณสามารถได้รับบางสิ่งเช่นบทเรียนโบว์ลิ่ง! = ประวัติญี่ปุ่น ถ้าอย่างนั้นคุณจะกลายเป็นข้อโต้แย้ง: BL! = JH เป็นข้อแก้ตัวสำหรับการสอน JH ที่ไม่เหมาะสมหรือไม่? นี่เป็นคำถามที่ไร้สาระและควรถูกยกเลิก หากคุณเห็นผู้สำเร็จการศึกษา CS ที่ไม่ทราบว่าทำไมคุณจึงใช้แฮชเทเบิลเหนือรายการที่เชื่อมโยงเขาได้รับการสอนไม่ดี หากคุณเห็นผู้สำเร็จการศึกษา CS ที่มีรหัสการเปลี่ยนงานไม่ดีนั่นอาจเป็นข้อยกเว้น
เยเรมีย์นันน์

2
@ Jeremiag Nunn: การใช้การเปรียบเทียบของคุณ: ประวัติศาสตร์ญี่ปุ่นไม่ได้ถูกสอนควบคู่กับการเล่นโบว์ลิ่ง ฉันกำลังโต้แย้งว่าโปรแกรม CS ทุกอันในความเป็นจริงสอนการเขียนโปรแกรมและพวกเขาใช้อาร์กิวเมนต์ "CS! = SE" เพื่อแก้ตัวจากการสอนให้ดี
Steven Evers

2
ความคิดอื่น: การขาดทักษะ SE ใน CS ที่เฉพาะเจาะจงนั้นเป็นความผิดของโรงเรียนหรือนักเรียนหรือไม่? ในแต่ละชั้นเรียนคุณอาจมีทักษะที่ค่อนข้างกว้างจากความสามารถไปจนถึงความน่ากลัว
อดัมเลียร์

2
@SnOrfus วิศวกรรมซอฟต์แวร์เป็นงานฝีมือของซอฟต์แวร์สร้าง วิทยาการคอมพิวเตอร์เป็นทฤษฎีที่อยู่เบื้องหลังซอฟต์แวร์ การรู้ทั้งสองอย่างนั้นดีเลิศ แต่ก็ยังแยกจากกัน การเปรียบเทียบ (IMO) ที่ดีกว่าของ @ Jeremiah จะเป็นหนึ่งในเครื่องมือสร้างเทียบกับการเล่น
dash-tom-bang

5
เชิงอรรถเกี่ยวกับนักวิชาการที่ไม่ต้องเขียนรหัสที่สามารถบำรุงรักษาได้เกือบเป็นประเด็น นั่นไม่ใช่สิ่งที่ CS ใส่ใจ
dash-tom-bang

คำตอบ:


27

ฉันไม่คิดว่ามันเป็น copout แต่เป็นการยืนยันว่าวิทยาศาสตร์คอมพิวเตอร์ไม่ใช่วิศวกรรมซอฟต์แวร์ไม่ใช่การเขียนโปรแกรม - มันเป็นวิทยาศาสตร์การคำนวณที่เป็นทางการ โดยพื้นฐานแล้วมันคือคณิตศาสตร์ (อันที่จริงโปรแกรม CS หลายโปรแกรมเริ่มต้นจากโปรแกรมคณิตศาสตร์ประยุกต์)

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

ประการที่สองมีมากเวลา จำกัด ในการสอนงาน - เป็นเรื่องที่กว้างมาก - ในหลักสูตรระดับปริญญาตรีทั่วไป หลักสูตรระดับปริญญาตรีของฉันมี 8 หลักสูตร CS (สำหรับ BA) หรือ 12 CS หลักสูตร (สำหรับ BS) รวมทั้งหลักสูตรคณิตศาสตร์ที่จำเป็นทั้งหมด นั่นไม่ใช่เวลาที่จะสอน CS และคณิตศาสตร์และการเขียนโปรแกรมและวิศวกรรมซอฟต์แวร์ดังนั้นในบางจุดคุณต้องตัดสินใจว่าอะไรที่สำคัญและสิ่งที่นักเรียนสามารถรับได้ด้วยตนเอง

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

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

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


นี่คือความคิดของฉัน แต่อธิบายได้ดีกว่าคำตอบของฉัน
เยเรมีย์นันน์

+1: สิ่งที่ดีมากมายที่นี่ฉันเกลียดที่จะเลือกที่ 1 สิ่ง แต่เมื่อพิจารณาว่า CS มีต้นกำเนิดมาจากคณิตศาสตร์ประยุกต์นั่นไม่ได้หมายความถึงความสำคัญของแอปพลิเคชัน - ในกรณีนี้การเขียนโปรแกรมใช่ไหม
Steven Evers

2
@SnOrfus: ในระดับที่การเขียนโปรแกรมจะใช้คณิตศาสตร์ใช่ แต่ก็เหมือนกับวิทยาศาสตร์คอมพิวเตอร์! = วิศวกรรมซอฟต์แวร์, การเขียนโปรแกรม! = วิศวกรรมซอฟต์แวร์ทั้งสอง
mipadi

1
@David Thornley: ประการแรกฉันและทุกคนที่ฉันเคยรู้จักใครใช้วิชาฟิสิกส์ใช้สโคปเมื่อศึกษาคลื่น ถึงแม้ว่าการเปรียบเทียบจะไม่ถือ นักเรียนได้รับการสอนการเขียนโปรแกรมเป็นส่วนหนึ่งของการศึกษาระดับปริญญา CS คุณเป็นฉันเป็นพวกเราทุกคนที่เข้าร่วมไม่เชื่อฟังได้ มันไม่ได้เป็นเพียงส่วนเดียวของหลักสูตรเดียว มันเป็นส่วนหนึ่งของอย่างน้อย 1-2 คลาสต่อภาคการศึกษา
Steven Evers

2
+1 สำหรับการอธิบายว่าโรงเรียน (วิทยาลัย, มหาวิทยาลัย, อะไรก็ตาม) ควรสอนวิธีตกปลาและไม่เพียง แต่มอบปลาให้คุณเท่านั้น
Emiliano

25

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

ฉันยอมรับว่า CS! = SE และฉันไม่แน่ใจว่าคุณสามารถไปโรงเรียนและกลายเป็น SE (แม้จะมีอาจารย์)


+! 1: ฉันเห็นประเด็นของคุณ แต่มันไม่ใช่แค่ 'ขัด' เท่านั้น หลายคนขาดทักษะพื้นฐานบางอย่าง
Steven Evers

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

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

@ dash-tom-bang: คุณจะพิจารณาคำสั่งโฟลว์ควบคุมในภาษาที่จำเป็นเพื่อเป็นพื้นฐานหรือไม่ ฉันสามารถยืนยันได้ว่ามี CS ที่เพิ่งจบการศึกษาระดับปริญญาตรีที่ไม่รู้จักพวกเขาส่วนใหญ่
Steven Evers

ฉันจะไม่พิจารณาการนำการควบคุมการไหลในภาษาใด ๆ มาใช้เพื่อเป็น "พื้นฐานของวิทยาศาสตร์คอมพิวเตอร์" อย่างไรก็ตามถ้ามีคนไม่เข้าใจการควบคุมการไหลเป็นแนวคิดแล้วพวกเขาไม่ได้เรียนรู้ CS
dash-tom-bang

10

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

ผู้คนต้องการสมมติ CS grad ใหม่จริงๆแล้วเป็น ITT Grad พวกเขาต้องการคนที่ได้รับการฝึกฝนในอาชีพ วิทยาการคอมพิวเตอร์เป็นวิทยาศาสตร์การเขียนโปรแกรมเป็นศิลปะ สิ่งเหล่านี้ไม่เหมือนกัน

นี่เป็นเหมือนการถามว่าทำไมผู้สำเร็จการศึกษาวิชาฟิสิกส์สดไม่ใช่วิศวกรรถยนต์ที่ดี มันโง่


2
การเขียนโปรแกรมเป็นงานฝีมือไม่ใช่ศิลปะ
dash-tom-bang

6
การเขียนโปรแกรมเป็นงานฝีมืองานวิศวกรรมและงานศิลปะ
Maciej Piechotka

2
ฉันจะไม่เปลี่ยนชื่อ วิทยาศาสตร์คอมพิวเตอร์คืออะไร แต่วิทยาศาสตร์ของคอมพิวเตอร์? กล่าวอีกนัยหนึ่งคือการศึกษาเครื่องคำนวณซึ่งหมายถึงการศึกษาการคำนวณ
Michael K

1
ควรเปลี่ยนชื่อเพราะคนทำให้สับสนในตัวคุณ คุณรู้จัก Edsger W. Dijastra หรือไม่ เขาเคยกล่าวไว้ว่า "วิทยาศาสตร์คอมพิวเตอร์ไม่ได้เกี่ยวกับคอมพิวเตอร์มากไปกว่าดาราศาสตร์ก็เป็นเรื่องเกี่ยวกับกล้องโทรทรรศน์" :)
boos

1
ศิลปะสร้างความงาม งานฝีมือสร้างยูทิลิตี้ ศิลปะสร้างขึ้นเพื่อความสวยงาม งานฝีมือถูกสร้างขึ้นสำหรับประโยชน์ของมัน ศิลปะอาจมีประโยชน์ งานฝีมืออาจจะสวยงาม วิศวกรรมซอฟต์แวร์สร้างยูทิลิตี้ ดังนั้นวิศวกรรมซอฟต์แวร์จึงเป็นงานฝีมือ
systemovich

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

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

เนื่องจากคุณได้สัมผัสกับระบบการศึกษาของสหรัฐและบทบาทของผลกำไรนี่เป็นหน้าที่ของมิลตันฟรีดแมนนักร้องประสานเสียง: youtube.com/watch?v=W3Seg0JE1PM
งาน

7

CS! = SE โต้แย้งว่าเป็น copout หรือข้อแก้ตัวสำหรับการสอนทักษะการเขียนโปรแกรมที่ไม่เหมาะสม

ไม่ CS ไม่ใช่ SE นั่นเป็นความจริงไม่ใช่ข้อแก้ตัว

โดยไม่คำนึงถึงคำตอบของคุณสำหรับคำถาม 1; ถ้าคุณอยู่ในตำแหน่งที่มีอำนาจยิ่งใหญ่ในการตัดสินใจ: คุณจะเน้นการสอนที่เหมาะสมของการเขียนโปรแกรมในหลักสูตร CS หรือไม่?

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


6

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

โปรแกรม BS ที่ได้รับการรับรองจาก American Chemical Society นั้นคุณจะต้องผ่านหลักสูตรเฉพาะเพื่อแสดงให้เห็นถึงความเชี่ยวชาญเฉพาะด้านทั้งภาคทฤษฎีและภาคปฏิบัติ (ภาคปฏิบัติ) ในปัจจุบัน CS ไม่มีอะไรแบบนี้เท่าที่ฉันรู้

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

เมื่อฉันทำงานเป็นนักเคมีสีอุตสาหกรรมพวกเขาจะหัวเราะเยาะความคิดที่ว่าฉันมีปริญญาตรีและไร้ความสามารถในห้องปฏิบัติการ แน่นอนว่ารายละเอียดของสิ่งที่ฉันทำในห้องแล็บนั้นแตกต่างจากที่ฉันเคยเรียนในห้องแล็บในโรงเรียน แต่หลักการก็เหมือนกัน - เราเพิ่งใช้เครื่องผสมสีและกระป๋องแทนบีกเกอร์และเครื่องกวนแม่เหล็ก .

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


มันไม่ได้บ้ามันเป็นโรคระบาด ประมาณ 90% ของรหัสที่ฉันเห็นเขียนโดยคนรอบข้างของฉันนั้นสามารถบำรุงรักษาได้เช่นเดียวกับหอเอนเมืองปิซา
Marcel Valdez Orozco

5

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


ฉันชอบที่จะลองอะไรแบบนั้น
ChaosPandion

คุณควรติดต่อมหาวิทยาลัยในพื้นที่ของคุณและดูว่าพวกเขามีสิ่งที่ชอบหรือไม่ คุณอยู่ที่ไหน?
เบ ธ ไวท์เซล

3
  1. ใช่มันเป็น copout 100% พวกเขาควรจะสอนทักษะระยะยาวซึ่งจะเป็นประโยชน์ตลอดอาชีพของเรา ไม่ว่าคุณตั้งใจจะเข้าเรียนในสถาบันการศึกษาหรือภาคอุตสาหกรรมคุณจะต้องสามารถโปรแกรมในลักษณะที่สามารถรักษาได้แม้ว่าจะเป็นด้วยตัวคุณเองเท่านั้น

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

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


ทักษะระยะยาวคือ CS "Java" ไม่ใช่ทักษะระยะยาวและไม่ใช่. NET, SQL, Pascal หรือ COBOL ถ้าหาก "ระยะยาว" คุณหมายถึง "มีความสุขที่คุณมีงานทำเมื่อพวกเขาต้องการใครซักคนที่จะดูแลระบบเดิม"
dash-tom-bang

ในขณะที่ฉันยอมรับว่าจำเป็นต้องมีทักษะพื้นฐาน (CS) ฉันหมายถึงการเขียนโค้ดที่สามารถบำรุงรักษาและอ่านง่ายโดยไม่คำนึงถึงภาษาการเขียนโปรแกรมที่เขียนขึ้นดังนั้นทักษะความหมายระยะยาวที่นอกเหนือไปจากเทคโนโลยีที่ใช้
JustJohn

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

3

ฉันคิดว่าปัญหาของเราคือเราเป็นเหมือนหมอมากกว่าที่เรายินดีที่จะยอมรับ ... เรามีความคิดนี้ว่าปริญญาสี่ปีควรเตรียมนักเรียนให้เขียนซอฟต์แวร์ มันไม่ได้ปิด

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

บางทีเราควรเป็นเหมือนยามากขึ้น สี่ปีของการทำงานขั้นพื้นฐาน (CS degree) และการอยู่อาศัย - การฝึกฝีมือภายใต้การดูแลของวิศวกรซอฟต์แวร์ที่มีประสบการณ์มากขึ้น อาจจะเป็นสิ่งที่เรามีอยู่แล้ว แต่เป็นทางการน้อยกว่า ... ฉันหมายถึงเหมือนผู้อยู่อาศัยเราเรียนรู้ทักษะที่มีค่าที่สุดของเราในที่ทำงานในงานแรกของเรา

อาจจะเป็นวินัยเราเพียงแค่ต้องทำสิ่งนี้ให้ดีขึ้น


หรือโปรแกรมต้นแบบช่างฝีมือ / เด็กฝึกงาน
Austin Salonen

1
โปรแกรม MD ไม่ใช่โปรแกรมวิทยาศาสตร์ คุณต้องการเรียนวิทยาศาสตร์คุณเรียนชีววิทยา หากคุณมีปัญหาด้านการแพทย์คุณไม่ควรนำไปหานักชีววิทยา
David Thornley

นี่เป็นความคิดที่ดีมาก: การทำให้ความจริงที่ว่าวิศวกรรมซอฟต์แวร์เป็นเรื่องของประสบการณ์ด้วย เช่นเดียวกับนักกฎหมายและแพทย์
Emiliano

แต่เรากำลังพูดถึงอะไรเกี่ยวกับดาวิด? มีกี่คนที่สำเร็จการศึกษาระดับปริญญาตรีใน CS และจากนั้นใช้เวลาส่วนใหญ่ในการประกอบอาชีพของเราในการทำ "วิทยาศาสตร์คอมพิวเตอร์"? สิ่งที่พวกเราส่วนใหญ่ทำคือออกไปสู่โลกใบนี้และฝึกฝนฝีมือการพัฒนาซอฟต์แวร์ มันเหมือนกับ MD: พวกเขา "ฝึกฝน" ยา เราฝึกการสร้างแอปพลิเคชัน
Chris Holmes

@Chris Holmes: ฉันรำคาญใจจริงๆกับความคิดที่ว่าปริญญา CSci ควรจะทำให้คุณกลายเป็นโปรแกรมเมอร์พร้อมที่จะจ้างงานโดยใช้ภาษาล่าสุด มีพื้นที่มากมายสำหรับการศึกษาระดับปริญญาหรือประกาศนียบัตรนั้นอาจมากกว่า CS CS จริง ฉันคิดว่าการพัฒนาซอฟต์แวร์นั้นคล้ายคลึงกับการฝึกฝนด้านการแพทย์ที่นี่ แต่คุณไม่ได้รับ MD ของคุณจากแผนกชีววิทยาหรือจิตวิทยาคุณได้รับจากโรงเรียนแพทย์ มันเป็นระดับที่เคารพนับถือมาก แต่ก็ไม่ได้เป็นปริญญาเอก
David Thornley

3

ฉันมีปริญญา CS และตลอดทั้งปีของโปรแกรมของฉันไม่มีการเขียนโปรแกรมทฤษฎีเท่านั้น เราถูกบอกว่าเราไม่ได้รับปริญญาในการเขียนโปรแกรม แต่ในวิทยาการคอมพิวเตอร์ หากคุณต้องการเป็นโปรแกรมเมอร์ไปที่วิทยาลัยชุมชน

เราเรียนรู้เกี่ยวกับอัลกอริทึมรูปแบบการออกแบบและทฤษฎีจำนวนมากเกี่ยวกับการแก้ปัญหาโดยไม่ใช้ภาษาแปซิฟิก ภาษาการเขียนโปรแกรมมาและไป แต่ทฤษฎีขีดเส้นใต้ยังคงเหมือนเดิม

ดังนั้นสำหรับคำถามแรกของคุณฉันไม่รู้สึกเลยว่า CS! = SE เป็นตำรวจ มันคือความจริง.

สำหรับคำถามที่สองของคุณไม่ฉันไม่คิดว่าจะทำ คุณจะสอนการเขียนโปรแกรมได้อย่างไร นอกเหนือจากลูป, ifs, เมธอด, คลาสและ OOP แล้วอะไรคือ 'การเขียนโปรแกรมที่เหมาะสม' และคุณจะทำให้มันเกี่ยวข้องกับภาษาการเขียนโปรแกรมอย่างไรบ้าง? คุณต้องมีประสบการณ์ในการเขียนรหัสสิ่งที่ระดับ 4 ปีไม่สามารถเตรียมให้คุณได้

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

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


++ - คะแนนยอดเยี่ยม คงจะดีถ้าหลักสูตร CS ให้ชั้นเรียนหนึ่งหรือสองชั้นกับสิ่งที่ "โลกแห่งความจริง" นี้ฉันเห็นด้วย เราจะพูดถึงเรื่องนี้ที่มหาวิทยาลัยของฉัน (ในปี 1993) แต่มันไม่เคยไปไหนเลย
dash-tom-bang

คุณคาดหวังว่าจะแสดงให้เห็นถึงความสามารถของคุณในชั้นเรียนที่สร้างขึ้นในปีที่ไม่มีทฤษฎีการเขียนโปรแกรมเท่านั้น? การสอบเป็นลายลักษณ์อักษรล้วนๆ
Carson63000

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

2

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

ฉันเลือกวิศวกรรมซอฟต์แวร์เพราะฉันไม่เคยสนใจปัญหาเชิงนามธรรมมากนัก แต่แม้แต่คนที่ชอบวิทยาศาสตร์คอมพิวเตอร์ล้วนก็ต้อง:

  • โปรแกรมระบบไฟล์ขนาดเล็กในพื้นที่ของผู้ใช้สร้างlinuxเคอร์เนลโมดูลและปรับเปลี่ยนเคอร์เนลตัวเองเขียนวัตถุเกมเชิงบริสุทธิ์SmallTalk,
  • เขียนโปรโตคอลการสื่อสารของตนเองแล้วนำมาใช้ซึ่งครูเลือก (มันยอดเยี่ยมจริงๆเมื่อโปรแกรมของนักเรียนสองคนสามารถสื่อสารได้อย่างง่ายดายแม้ว่าพวกเขาจะไม่ได้ทำงานร่วมกันมาก่อน)
  • สร้างโครงการขนาดใหญ่Javaในทีมสี่
  • สร้างโครงการการเขียนโปรแกรมการทำงานบางอย่าง
  • เขียนโปรแกรมที่เป็นของแข็งหลายตัวCสำหรับการเขียนโปรแกรมแบบขนาน (ความคิดเป็นนามธรรม แต่ความคิดเห็นค่อนข้างรุนแรงเช่นการสูญเสียคะแนนที่ไม่ให้ผลลัพธ์ที่เหมาะสมเมื่อโปรแกรมล้มเหลวเช่นยูนิกซ์ที่ดีprogramควรทำ)
  • สร้างเว็บพอร์ทัลโดยใช้เฟรมเวิร์กเว็บ (เราเลือกdjangoซึ่งทำให้ฉันรักเฟรมเวิร์กนี้)
  • สร้างโปรแกรมที่ค่อนข้างใหญ่โดยใช้LAMP(ฉันยังมีฝันร้ายเกี่ยวกับphpแต่ใช้postgresqlแทนMySQLและฉันมีความสุขมากที่รู้เรื่องนี้DBMSตอนนี้)
  • และถ้ามีคนเลือกเขาสามารถเขียนโปรแกรมสำหรับวิทยานิพนธ์ปริญญาโทของเขา - ผมเขียน 10k สายโปรแกรมสก์ท็อปที่ใช้pythonPyQt

อาจจะมีโครงการอื่น ๆ แต่ฉันก็ลืมพวกเขาตอนนี้

ประเด็นของฉันคือ: ทุกอย่างขึ้นอยู่กับโรงเรียน ฉันไม่ชอบวิธีการทางวิศวกรรมซอฟต์แวร์ที่บริสุทธิ์ซึ่งJavaเป็นภาษาหลัก ฉันต้องช่วยเพื่อนครั้งหนึ่งซึ่งเข้าเรียนในโรงเรียนดังกล่าวและต้องเขียนโปรแกรมบางอย่างสำหรับการเขียนโปรแกรมแบบขนาน ผมต้องเขียนให้เขาโดยทั่วไปเพราะเขาได้ว่าsizeof(some_string)ในการCให้ความยาวของสตริง

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


ฟังดูเหมือนโปรแกรมที่ดี ทฤษฎีบางอย่าง มีการฝึกฝนมากมาย
Mike Dunlavey

1

ฉันคิดว่าคำตอบคือใช่ (ในทาง)

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

ฉันแน่ใจว่าโปรแกรมของโรงเรียนควรได้รับการแก้ไขฉันเป็นประเทศ "โลกที่สาม" ที่เล็กมากโชคดีที่มีความพยายามที่จะทำให้สิ่งนี้เกิดขึ้น เราเป็นประเทศแรกที่ใช้โปรแกรม OLPC http://laptop.org/en/


1

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


ปริญญาของฉันมีบรรดาศักดิ์วิทยาศาสตร์คอมพิวเตอร์และวิศวกรรมซอฟต์แวร์และมุ่งที่จะมอบสิ่งที่ดีที่สุดให้กับคุณทั้งในโลกนี้คือเป็นโปรแกรมเมอร์ที่มีความสามารถและรู้ทฤษฎีมากพอที่จะเรียนต่อในระดับปริญญาตรีหรือการวิจัยได้ ฉันคิดว่านั่นเป็นวิธีการที่ดี
Michael K

1

สมมติว่าเป้าหมายคือการให้ความรู้แก่วิศวกรซอฟต์แวร์ที่ดี (โปรแกรมเมอร์) เพราะโลกต้องการพวกเขามันเป็นคำตอบที่บอกว่าฉันคิดว่าควรจะสอนหรือไม่?

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

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

ฉันเป็นนักศึกษาวิศวกรรมศาสตร์ในสาขาเครื่องกลและวิศวกรรมไฟฟ้าในภายหลัง ส่วนพื้นฐานคือ a) พื้นฐานทางคณิตศาสตร์และ b) การแก้ปัญหาในทางปฏิบัติ วิศวกรรมซอฟต์แวร์ควรเป็นเช่นนั้นไม่ใช่แค่การเขียนโปรแกรม

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


0

ผู้ที่สามารถทำได้; ผู้ที่ไม่สามารถสอนได้

ที่มหาวิทยาลัยของฉันฐานความรู้ของครูมีความบกพร่องอย่างมาก ฉันได้เห็นครูพยายามที่จะเข้าใจวิธีการแสดงตารางกึ่งโครงสร้างใน XML ในขณะที่ถือปริญญาเอกในการออกแบบฐานข้อมูล ฉันเห็นครูผู้สอนของฉันถามฉันว่ารหัสของฉันกำลังทำอะไรเมื่อเป็นตัวอย่างรหัสของเขาที่ฉันคัดลอกและวาง ฉันเห็นครูสอนการออกแบบซอฟต์แวร์บอกเราว่าวิธี Agile นั้นเหมือนกับวิธีน้ำตกเพียงเร็วขึ้นเท่านั้นที่กระบวนการพัฒนาแบบวนซ้ำมีและสามารถมีได้ 3 ครั้งเท่านั้นเพราะนั่นคือสิ่งที่รูปภาพใช้ในหนังสือเป็นตัวอย่าง ครูคนหนึ่งของฉันไม่รู้ด้วยซ้ำว่าประโยคอื่นคืออะไร

ฉันไม่เชื่อว่าพวกเขากำลัง 'จัดการ' หรือแก้ตัวฉันเชื่อว่าพวกเขากำลังทำสิ่งที่ดีที่สุดเท่าที่จะทำได้ด้วยประสบการณ์ของพวกเขาซึ่งพวกเขามีค่าน้อย

ฉันเห็นด้วยกับคนอื่น ๆ ที่โพสต์ที่นี่ว่า 4 ปีไม่เพียงพอที่จะเป็นโปรแกรมเมอร์ปรุงรส แต่ประสบการณ์ที่ครูของฉันมีก็ไม่เพียงพอที่จะทำให้พวกเขาปรุงรสด้วยเช่นกัน มันเหมือนกับใน Ender's Shadow ที่ Bean สังเกตเห็นตัวชี้วัดที่ครูในโรงเรียนการต่อสู้ใช้หมดเพราะสงครามครั้งสุดท้ายซึ่งเป็นกฎนำทางนั้นสั้นเกินไปที่จะแสดงสิ่งที่จำเป็นจริง ๆ ในคำอื่น ๆ ครูทำสิ่งที่ดีที่สุดเท่าที่จะทำได้ แต่ล้มเหลวที่จะมีประสบการณ์รู้ว่าสิ่งใดที่จำเป็นในการสร้างผู้บัญชาการที่ดี (หรือโปรแกรมเมอร์ที่ดีในกรณีนี้)


3
ฉันคิดว่าตัวอย่างของคุณหลายอย่างชัดเจนว่ามีเพียงกรณีที่ครูของคุณพยายามทำให้สิ่งต่าง ๆ ง่ายขึ้นเพื่อผลประโยชน์ของคุณเอง Those that can, do; those that cannot, teach.ฉันยังไม่เห็นด้วยกับเรื่องนี้เลย: นักวิชาการและอาชีพด้านอุตสาหกรรมนำไปสู่วิถีชีวิตที่แตกต่างอย่างสิ้นเชิง งานวิจัยส่วนใหญ่ของโลกมาจากนักวิชาการ และฉันไม่เห็นวิธีที่คุณตอบคำถามเดิม
ไม่มีใคร

2
XML ต้องทำอะไรกับการออกแบบฐานข้อมูลนอกเหนือจากข้อเท็จจริงที่ว่าหากใครไม่สนใจประสิทธิภาพการทำงานให้ใช้ XML เป็นที่เก็บข้อมูลสำรองสำหรับฐานข้อมูล อย่าพูดว่าครูบางคนสามารถพลาดประเด็นนี้ได้ (ฉันจำได้ว่าโต้เถียงกับอาจารย์ผู้สอนเกี่ยวกับประเด็นที่ถูกลบเนื่องจาก "ความคิดเห็นมากเกินไป" เมื่อหลักสูตรถึงจุดนั้นสอน "ความเห็นเหมือนลม") แต่มันเป็นการพูดเกินจริง หากมีคนต้องการเรียนรู้ Java มีวิธีที่ถูกกว่าที่จะทำผ่านหลักสูตร CS
dash-tom-bang

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

@ dash-tom-bang, XML เป็นตัวอย่างที่สมบูรณ์แบบของฐานข้อมูลกึ่งโครงสร้าง en.wikipedia.org/wiki/Semi-structured_model
Malfist

1
XML ที่ใช้เช่นนี้ยังคงเป็นการนำทฤษฎีฐานข้อมูลไปใช้ ไม่ใช่ทฤษฎีเอง
dash-tom-bang

0

นักวิทยาศาสตร์คอมพิวเตอร์และวิศวกรซอฟต์แวร์นั้นแตกต่างกัน นักวิทยาศาสตร์คือคนที่ทำการทดลองอย่างบ้าคลั่งและเกิดอัลกอริธึมที่วิศวกรซอฟต์แวร์ของเราใช้ประโยชน์ได้ดีกว่า

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

นักวิทยาศาสตร์คอมพิวเตอร์ก็เหมือนนักเคมีเหล่านั้น สิ่งที่พวกเขาทำคือทดสอบทฤษฎีด้วยรหัส พวกเขาไม่สนใจว่าโค้ดนั้นจะบำรุงรักษาได้อย่างไร พวกเขาพิสูจน์ทฤษฎีและย้ายไปยังอีก แพ็คเกจอื่นที่อัลกอริธึมขึ้นและทำให้มีประโยชน์สำหรับคนทั่วไปและเรามีวิสัยทัศน์ MP3 หรือคอมพิวเตอร์ด้วย Kinect หรือวิดีโอสตรีมมิ่งบน iPhone ของคุณ CS! = SE เป็นอาร์กิวเมนต์ที่ถูกต้อง

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


0

Edsger Wybe Dijkstra เป็นนักวิทยาศาสตร์คอมพิวเตอร์ชาวดัตช์

เขาได้รับรางวัลทัวริง 1972 สำหรับความช่วยเหลือขั้นพื้นฐานในการพัฒนาภาษาการเขียนโปรแกรมเคยกล่าวไว้ว่า:

"วิทยาศาสตร์คอมพิวเตอร์ไม่เกี่ยวกับคอมพิวเตอร์มากกว่า ASTROMY เกี่ยวกับกล้องโทรศัพพ์"

CS นั้นแตกต่างจาก SE จริงๆ (CS! = SE)

CS เป็นนักวิทยาศาสตร์ที่ได้รับความรู้เกี่ยวกับวิทยาศาสตร์คอมพิวเตอร์

วิทยาศาสตร์คอมพิวเตอร์หรือวิทยาศาสตร์คอมพิวเตอร์ (บางครั้งย่อ CS) เป็นการศึกษาพื้นฐานทางทฤษฎีของข้อมูลและการคำนวณและเทคนิคการปฏิบัติสำหรับการดำเนินงานและการประยุกต์ใช้ในระบบคอมพิวเตอร์มันมักอธิบายว่าเป็นการศึกษาอย่างเป็นระบบของกระบวนการอัลกอริทึมที่สร้างอธิบาย และแปลงข้อมูล

วิทยาการคอมพิวเตอร์มีหลายสาขาย่อยเช่น:

  • วิทยาศาสตร์คอมพิวเตอร์เชิงทฤษฎี
  • ทฤษฎีการคำนวณ
  • อัลกอริทึมและโครงสร้างข้อมูล
  • องค์ประกอบและสถาปัตยกรรมคอมพิวเตอร์
  • multiprocessing
  • วิทยาศาสตร์การคำนวณ
  • ปัญญาประดิษฐ์
  • ระบบซอฟต์แวร์

พวกเราหลายคนไม่ต้องการทักษะนี้ในการทำงานทุกวันหรืออย่างน้อยก็น้อย

SOFTWARE ENGINEER (SE) เป็นอาชีพที่อุทิศตนเพื่อการออกแบบการใช้และการปรับเปลี่ยนซอฟต์แวร์เพื่อให้มีคุณภาพสูงขึ้นราคาไม่แพงบำรุงรักษาและสร้างได้เร็วขึ้น มันเป็น "วิธีการอย่างเป็นระบบเพื่อการวิเคราะห์การออกแบบการประเมินผลการดำเนินการทดสอบการบำรุงรักษาและวิศวกรรมของซอฟต์แวร์โดยใช้วิศวกรรมซอฟต์แวร์"

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

ในฐานะที่เป็นความรู้ของ SE เขาคาดว่าจะมีความรู้ในการจัดการการผลิตของปัญหาที่ซับซ้อนจริงนี้และจัดการการพัฒนาของทีมหรือโครงการเกี่ยวกับสาขานี้

ร่วมกันทำวิจัยทางวิทยาศาสตร์โดย CS ในวิทยาศาสตร์ประยุกต์ด้วยความช่วยเหลือของ SE

ฉันไม่ได้หมายถึง CS ดีกว่า SE ฉันหมายถึง CS! = SE

คำถามประเภทนี้เป็นคำถามเดียวกันที่ผู้ใช้คอมพิวเตอร์ไม่ถามตัวเองเมื่อถามคุณว่าทำไมในฐานะโปรแกรมเมอร์คุณไม่สามารถแก้ไขทางโทรศัพท์ได้ปัญหาของโปรแกรม X, Y, Z ในระบบปฏิบัติการ J, M, N. ;)

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

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

หากคุณคิดว่า CS อาจเป็นข้อแก้ตัวสำหรับทักษะการเขียนโปรแกรมที่ไม่ดีคุณจะพลาดจุดที่เกี่ยวกับ CS และ SE คืออะไร

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

มีความสุข :)

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