עבור לתוכן

התלבטות בין מדעי המחשב והנדסת תוכנה ומוסדות לימודים

Featured Replies

פורסם

אהלן,

אני רוצה להתחיל ללמוד באוקטובר באוניברסיטה (ב-2010, עם פתיחת שנת הלימודים האקדמאית הבאה).

הבעיה היא שאני מתלבט בין מדעי המחשב להנדסת תוכנה. יותר מכך, אני עוד לא יודע איפה.

התחלתי בדרך השלילה ופסלתי כבר את רוב האוניברסיטאות, כשרק הטכניון, ת"א ועברית נשארות אופציות.

הכיוון המקצועי שאני רוצה לעסוק בו זה פיתוח משחקי מחשב, בפרט בעבודות ה-gameplay programming, קרי, לקיחת המודלים, המנועים הגרפים, מפות, מה שלא יהיה, לעבוד בצמוד ל-designer וליצור את המשחק עצמו. אני אוהב להסתכל על זה כמו על החוטים במריונטה שמחברים את החלקים השונים והופכים אותה מאוסף חתיכות ארעי לבובה.

אני לא רוצה לעשות תואר סתם בשביל לצאת ידי חובה, אני מחפש תואר שבאמת יתן לי כלים להיות טוב במה שאני עושה. פחות מפריע לי הקושי של כל תואר, כיוון ש(בתקווה) זה עושה אותי יותר מקצועי ומיומן. ברור לי שתואר לבד לא יתן לי אוטומטית עבודה בחברה נחשקת, אבל זאת לפחות התחלה בכיוון. מה היתרונות של כל תואר, איפה מתבטא השוני בפועל ואיפה הכי כדאי לעשות אותו?

פורסם

*מעקב*

פורסם

אני לא יודע לספר לך יותר מדי על ההבדל בפועל בשני התארים, רק יכול להעיד על עצמי שאני לומד מדעי המחשב שנה ב' כרגע באונ' ת"א.

באופן *עקרוני*התואר של מדעי המחשב עוסק יותר בהיבט האקדמי של "מדעי המחשב" - כלומר - זה שלא מצריך אפילו קיומם של מחשבים (אלגוריתמים, מבני נתונים, הסתברות, מתמטיקה בדידה, סיבוכיות, ועוד).

בעוד שהתואר של הנדסת תוכנה אמור להיות ממש תואר בהנדסה, כלומר - מתבסס על הוראת דיסיפלינות הנדסיות שיעזרו לך להבין כיצד בנויות וכיצד לתכנן מערכות תוכנה נכונות.

להלן קצת הגדרות מויקיפדיה:

הנדסת תוכנה:

Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software.[1]

מדעי המחשב:

Computer science or computing science (sometimes abbreviated CS) is the study of the theoretical foundations of information and computation, and of practical techniques for their implementation and application in computer systems.[1][2][3] It is frequently described as the systematic study of algorithmic processes that create, describe and transform information. According to Peter J. Denning, the fundamental question underlying computer science is, "What can be (efficiently) automated?"

בפועל - אני יכול להעיד שבשני המסלולים (לפחות באונ' ת"א) נראה שיש קצת מכל דבר - כלומר - גם במדעי המחשב אתה לומד בעצם קצת הנדסת תוכנה, וגם הדנסת תוכנה אתה לומד קצת מדעי המחשב. בגדול, הנדסת תוכנה עשוי להיתפס (בעולם העסקי) כמשהו טיפה יותר מקצועי ופחות אקדמי, שיותר מכשיר אותך לפיתוח - בעוד שמדעי המחשב עשוי להיתפס או כמשהו טיפה יותר תיאורטי (שיותר מכשיר אותך לדוגמא להיבט המחקרי-אלגוריתמי של העניין, - לדוגמא - איך אני מבצע חיפוש יותר יעיל באינטרנט - שואלת גוגל) או כללי (בגלל שיותר אנשים נוטים לקחת אותו, אז הרבה פעמים אפשר להסתעף ממנו ליותר סוגים של מקצועות מאשר הנדסת תוכנה).

אני מציע לך להגיע לאוניברסיטה ולהתייעץ פנים מול פנים עם גורמים רשמיים שיעזרו לך לקבל את ההחלטה (יש להם כל מיני גורמים שיכולים לייעץ).

אם להתייחס באופן קונקרטי לשאלה שלך - יכול להיות ש-"מדעי המחשב" יספיק לך.

מה שאתה מתאר נשמע כמו אדריכל תוכנה :

[edit] Design

The architect makes high-level design choices much more often than low-level choices. In addition, the architect may sometimes dictate technical standards, including coding standards, tools, or platforms, so as to advance business goals rather than to place arbitrary restrictions on the choices of developers. Note that software architects rarely deal with the physical architecture of the hardware environment, confining themselves to the design methodology of the code.

[edit] Communication

Architects also have to communicate effectively, not only to understand the business needs, but also to advance their own architectural vision. They can do so verbally, in writing, and through various software architectural models that specialize in communicating architecture.

כלומר - זה שאחראי על ה-"שלד" של התוכנה, ועל הטכניקות, הטכנולוגיות, השיטות והכלים שבהם יעשה שימוש במהלך הפיתוח ע"י הצוותים השונים.

אבל אני לא בטוח שזה בדיוק מה שאתה רוצה. מה שאתה באמת רוצה לדעתי לא קיים. אין "בן אדם אחד" שמושך בחוטים, בדרך כלל פיתוח תוכנה זה תמיד מלאכה שיתופית --- כל אחד מקבל "נתח" או "קומפוננטה" ואחראי לפתח אותה. בסוף, הקומפוננטות מתחברות זו לזו, אבל לא בידיו של איזשהו "מנצח" על התזמורת, אלא ע"י אותם מפתחים עצמם.

פורסם

בשנים האחרונות יש הרבה קורסי הסבה ממדעי המחשב להנדסת תוכנה וחשמל.

נראה שכיום הכי קל למצוא עבודה למהנדסי חשמל, וממילא המסלול של הנדסת תוכנה דומה לאחד המסלולים בתואר של חשמל (השנתיים הראשונות כמעט זהות).

הטכניון ות"א מקומות מצויינים להנדסת חשמל ותוכנה.

באופן כללי נראה שמה שחשוב בפרקטיקה (תכנות ופיתוח תוכנה באופן כללי) לא קשור במיוחד למה שלומדים במדעי המחשב, ואת הרוב לומדים לבד, ועדיף תוך כדי הלימודים.

פורסם

אני רק רוצה להבהיר שגם במדעי המחשב יש קורסים שנוגעים לפיתוח תוכנה (יש קורס בשם "תוכנה 1" שמלמד JAVA' יש קורס "מערכות הפעלה", ועוד ועוד).

השאלה היא על מה הדגש.

זריזי - פרקטיקה זה שאלה מעניינת --- גוגל לדוגמא צריכה אנשים בעלי השכלה תיאורטית שיפתחו לה אלגוריתמים יעילים לחיפוש, ואנשים בעלי ידע מעשי בתכנות לא ממש יועילו בנקודה הזו. CISCO זקוקה לאנשים בעלי כישורים אלגוריתמיים דומים כדי שיוכלו לפתח מערכות ניתוב יעילות יותר, שמקצרות את זמן הניתוב בנתב מסויים מ-3 מילי שניות למילי שניה (לדוגמא). כל תואר טוב עבור מטרות אחרות, ובכל מקרה, מה שיותר חשוב מהתואר זה מי שלומד אותו. ככה שאם אתה מוכשר, סקרן ובעל מוטיבציה, אתה תגיע לאן שתרצה בלי קשר ממש לאיזה תואר תעשה.

פורסם

איפה ללמוד?

פורסם

^ איפה אתה רוצה לגור ?

אין מקום שהוא "נכון". הטכניון ות"א מקומות מעולים. בטכניון יש יותר סטודנטים והאווירה יותר נוקשה. יש צמתים בחיים שצריך לבחור ימינה או שמאלה, ואני לא בטוח שבפורום תמצא תשובות לזה. תחשוב טוב מה אתה רוצה לעשות בחיים, או לפחות בשנים הקרובות, בקר בשני הקמפוסים, דבר עם אנשים, תלמידים מרצים ומזכירות (תראה איפה פחות מגעילים), תציץ לכיתות. לחילופין, פשוט תבחר או תירשם לשניהם ותחליט אחר כך.

וKlayhamn, עכשיו שהסברת שגוגל וסיסקו צריכים אלגוריתמאים אז הכל ברור.

פורסם

כבוגר הטכניון , אני מודיע חד משמעית, שאוירת לימודים , ממש, תמצא בטכניון, יותר מכל קמפוס אחר בארץ.

אכן, הלימודים, /או יותר נכון הדרישו8ת קצת יותר נוקשות, והחומר הנלמד, לעיתים, הרבה יותר ממה שדורשים בקמפוסים אחרים, ואם חשוב לך להצליח ולקבל השכלה , קצת יותר רחבה, אני ממליץ על הטכניון - אתה תמצא שישנו ערך מוסף גבוהה יותר בטכניון מאשר בקמפוסים אחרים.[br]פורסם בתאריך: 14.01.2010 בשעה 17:17:29


ודרך אגב, אתה לא עתודאי נכון?

ועוד ענין, אני הייתי ממליץ לך ללכת על הנדסת תוכנה, ואם אתה מסוגל, לקחת קורסים נוספים ממדעי המחשב, כך שתוכל ביתר קלות לעשות תואר שני במדעי המחשב, וכך תהיה עם שני תארים ביד; תוכל כמובן להתמחות בכל תחום שתמצא אותו מענין.

פורסם
  • מחבר

זהו שזה גם מה שאמרו לי, שבטכניון יש אווירה לימודית הרבה יותר טובה ובתל אביב זה יותר בגישה של "בוא, תן ת'כסף, נלמד אותך ולך הביתה". זה לגיטימי, יש לי חבר שסיים שם תואר מדעי המחשב וחבר שעדיין לומד שם בפקולטה להנדסה ושניהם מרוצים סך הכל אבל כמו שאמרתי, אני מחפש את הערך המוסף.

אז אתה אומר שאפשר לעשות שני תארים ביחד? הקורסים הנוספים שהתכוונת אליהם הם בנוסף לקורסים של הנדסת תוכנה או קורסים שאפשר לקחת במסגרת הנדסת תוכנה ו"נחשבים" גם למדעי המחשב?

אה ולא, אני לא עתודאי.

תודה לכל המגיבים עד עכשיו, לקחתי את דבריכם לתשומת לבי. ב-24 יש יום פתוח בטכניון שאני מתכוון להיות בו, כנ"ל לגבי יום פתוח ב-12 בחודש הבא בת"א. מעבר לזה אני מדבר עם אנשים, חוקר ומתעניין (זה בעצם מה שאני עושה פה).

מה שמעניין זה שיש כאלה שאומרים לי שבשביל מה שאני מחפש מספיק מדעי המחשב כי הקורסים הנוספים במתמטיקה/פיזיקה לא נותנים לי יתרון או יכולת תכנות טובה יותר כי אני ממילא לא אשתמש בהם בעבודה, ואם אני אדרש ללמוד בעבודה תחום מיוחד של מתמטיקה/פיזיקה (נגיד, מודל פיזיקת חלקיקים למנוע... לא בטוח שזה אומר משו בכלל, אנא אערף) אז אני אתמחה בזה כבר בעבודה באופן ספציפי (וגם סתם חבל על שנה רביעית של תואר).

מנגד, אחרים אומרים לי שאם מה שמעניין אותי זה אשכרה לשבת ולבנות תוכנה (או קוד שמהווה חלק ממנה לצורך העניין) יותר הולם התואר של הנדסת תוכנה.

אה ויש את הסוג השלישי של אנשים שאומרים שזה הכל אותו חארטה ;)

פורסם

כל 3 התשובות נכונות, השאלה מאיזו פרספקטיבה אתה מסתכל על זה

א. זה נכון שהקורסים האקסטרה לא יתנו לך בהכרח נסיון או ידע פרקטי שישמש אותך מאוחר יותר בעבודה. למעשה, הסיכוי לכך די קטן. רוב הכישורים המעשיים נרכשים במהלך שנות העבודה הראשונות - או לאורך כל הקריירה.

ב. זה נכון (וכמו שאמרתי קודם) שהנדסת תוכנה *מתמקדת* יותר בהיבט ההנדסי של בניית תוכנה. הנדסה זה ממש עולם ומלואו, ומנקודת ההסתכלות הזו "הנדסת תוכנה" היא כאילו רק "שלוחה" של ההנדסה הכוללת - כלומר, איזשהו יישום ספציפי של עקרונות וכלים מעולם ההנדסה. אבל יש המון המון המון אנשים (אני ביניהם) שלומדים מדעי המחשב והופכים למפתחים.

ג. זה נכון שהכל אותו חארטה. הסיבה לכך היא שהקורסים שנלמדים נועדו לתת לך רקע כללי. הקורסים המתמטיים מהווים בסיס ללימוד חלק מהקורסים האחרים - אבל בדרך כלל השימוש שאשכרה נעשה בהם הוא קטן מאוד (לדוגמא, לומדים הסתברות אבל בקושי משתמשים ב-10% ממה שלומדים --- אבל כן יש לזה שימוש לדוגא בחישוב סיבוכיות, אלוגריתמים וכו'). בעקרון האוניברסיטה נותנת לך "לטעום קצת מכל דבר" בתואר ראשון - כדי שתכיר היבטים שונים של העולם האקדמי.

כמו שתיארתי קודם -- מדעי המחשב זה ענף מחקרי אקדמי שבכלל לא עוסק במחשבים PER SE - אלא ב*חישובים* - כלומר - איך לקחת בעיות מהעולם האמיתי, לייצג אותם כמודל מתמטי, ולפתור אותן ע"י מבנה נתונים או אלגוריתם כלשהו. זה על רגל אחת - "מדעי המחשב".

הנדסת תוכנה, לעומת זאת, זה ענף בהנדסה שעוסק *בתוכנה* כאובייקט אשר בונים אותו כמו כל אובייקט-הנדסי אחר --- כמו גשר, או מכונית. יש עקרונות שאתה לומד, יש שיטות, כלים, וכו' וכו' שאמורים לגרום לך להבין מערכות תוכנה או להגות מערכות תוכנה טובות יותר.

בשביל לדעת *לתכנת* אתה יכול ללמוד בבית, או לקחת ספר, או ללכת לקורס באחת המכללות.

האקדמיה נועדה בעקרון למחקר. נכון שרוב אלה שהולכים ללמוד תואר ראשון (או אפילו שני) לא עושים את זה בהכרח כי הם מתעניינים במחקר, אלא יותר כי הם רוצים לרכוש ידע ותארים שיעזרו להם להתקדם בקריירה שלהם --- אבל זו המטרה המוגדרת של האקדמיה. הנדסה זה קצת שונה, כי הנדסה לא נועדה למחקר אלא ליישום פרקטי בלבד (זה לא אומר שאין מחקר שעוסק בהנדסה, או שזה "הכל ת'כלס בלי שום תיאוריה") אבל הכוונה היא שבניגוד למדעי המחשב, הנדסת תוכנה לא מתיימרת להתעסק בכל מיני בעיות תיאורטיות שלא קשורות באופן ישיר לבעיה מהעולם האמיתי. אבל שוב, אין הפרדה ברורה בין שני המקצועות הללו ויש חפיפה רבה, באופן טבעי.

לכן בת'כלס, הדבר הכי טוב שאתה יכול לעשות זה פשוט לדבר עם כמה שיותר אנשים - *להסתכל על סיליבוסים* ולראות איזה סוג קורסים נלמדים, לראות אם זה מדבר אליך בכלל. אני חושב שסיליבוס זה מדד לא רע, למרות שהרבה פעמים אתה לא יודע מה באמת עומד מאחורי שם כמו "מודלים חישוביים" או דברים בסגנון ורק כשאתה מגיע לקורס (או מדבר עליו עם אנשים) אתה מבין מה לומדים בו.

כמו שאמרתי, מה שלא תבחר בסוף - זה לא הכי משנה בעולם - משתי סיבות:

א. תמיד אפשר לעבור מתואר אחד לשני, או לעשות תואר שני במשהו אחר לגמרי, או לפרוש באמצע, או לקחת עוד קורסים שמעניינים אותך

ב. בסופו של דבר הסקרנות האישית שלך, הנטיות הטבעיות שלך, והכישורים שלך - הם מה שיקבע לאן תתנווט גם באקדמיה וגם בקריירה. זה לא שאם עכשיו אתה בוחר בחוג אחד במקום באחר - הופס - סגרת לעצמך 100 דלתות והכרעת את מסלול חייך לנצח. זה פשוט לא עובד כך.

בהצלחה :xyxthumbs:

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים