復旦大學的軟體工程專業如何?課程設置是怎樣的?
本問題被收錄至活動「你幫考生選學校,知乎給你送飯票」中。
活動時間:2019/6/6 - 6/20
活動規則:內容切題、無事實錯誤且同等條件下創作時間在前的回答將被優先採納,回答被採納後將獲得知乎鹽選會員 7 天體驗卡並分享 100000 元獎金。
為學弟學妹們答疑解惑,期待你的分享~
利益相關:13級、17屆校友,畢業後加入創業公司,後加入百度。
我覺得現有的回答還是比較官方了一些,我以個人在復旦大學軟體工程專業的經歷來說明一下相關的情況。
課程分類
本人在四學年共修讀 162 學分,屬於稍微修多了一些。在所有的學分中,大致分為以下幾類:
- 國內基本所有大學所有專業必修的課程
大致包括政治必修課,體育必修課,大學英語必修課等。通常在大一大二修讀完畢。
2. 復旦大學基本所有專業要修的通識課程
大致包括政治選修課,六個方向的通識課程等。通常在大一大二修讀完畢。
3. 基礎必修課程,專業必修課程,專業選修課程
這類我放在後面詳細說。
課程難度
課程的學分大部分在 2 到 5 分不等,代表你修讀此可能需要花費的時間。課程成績分為 A, B, C, D, F 的大等級,和諸如 A-, B+ 在內的小等級,滿分為 A 摺合績點 4.0,F 則需要來年重修。
每一門課,A 和 A- 的比例不能超過 30%,成績將由多個部分構成,視每個課程設置的不同而不同。可能包含在內的要素有:
- 日常成績
包括出勤(佔比通常很小,且抽查)、作業成績(homework)、課題演講(俗稱 pre)、討論課(通常由助教帶領)、實驗課(俗稱 lab)
2. 期中成績
期中考試、期中論文、期中項目(俗稱 project,可能有多次)
3. 期末成績
期末考試、期末論文、期末項目(project)
一般來說課程總成績由以上三項組成,根據課程不同有取捨,比如有期末考的就不會有期末論文。且期末成績通常佔比最大。
考試周/Deadline
每學期最後幾周為考試周,或者課程論文/項目的截止日期,一般通識課程較早結束,專業課程較晚結束,在考試周你可能會面臨一天兩門考試,也可能一週只有一門考試。考試周會停課複習,也有部分課程會開複習課。考完所有課程,你就放寒暑假了。
如果有特殊情況,你可以申請緩考,如果考掛了,可以有機會補考,緩考和補考都在假期結束的一週至兩周內。
大一
大一需要修學的課程除了上面說了一些通識課程之外,主要是這幾門:
- 高等數學A,10 學分
對於數學知識的掌握要求,最高的是數學系,他們會花費4年時間學習數學。其次我們專業在內的理工學學位,除了學習高數A之外,還需要學習部分數學課程,我們所在的專業,需要另外學習一門《離散數學》。而後是部分專業只需要學習《高等數學B》,課程會簡單一些。
高數要獲得好成績,單單理解一些概念是不夠的,必須刷題積累解題技巧。考試稍難於課後習題。
2. 大學物理B, 8 學分
4 年間僅有一門的物理課,會配合一門《基礎物理實驗》。大物B 的成績由考試決定,需要解題技巧,考試稍難於課後習題,但比高數稍簡單。實驗課的成績由實驗報告決定。
3. 程序設計, 5 學分
其實就是 java 語言教學,附帶著學習基礎的面向對象編程和基礎的演算法。期末是一個 project,當時做的是推箱子。
4. 計算機系統基礎, 6 學分
神課之一,也很變態,修學完畢後,熟悉計算機系統的各個部分的實現,考試,試題與課後習題類似,教材記得是這本
https://book.douban.com/subject/5333562/?book.douban.com大二
升大二的暑假,前往張江校區並進行軍訓(是的,復旦的軍訓在大二)。會面臨一次方向選擇,分 A應用開發、B系統軟體、C網路多媒體,具體可以看其他的回答。我選的B。
但是並不是說三個方向大相徑庭,他們還是有很多重合的專業必修課程,並且,你會有很多多餘的學分,可以在其他的方向進行選修,一般來說,我在必修 B 的所有課程之外,大概可以在 A 和 C 各選擇一半的課程學習。
一般來說,大二時還沒有修完所有的通識課程,通識課程又大部分在本部邯鄲校區,所以你需要乘坐校車(大約30分鐘)往返。
之後對於課程的講解就分為三個方向必修課和我自己修學過的比較推薦的課程
- 離散數學, 4 學分
主要是《概率論》+《線性代數》,考試難度與課後習題類似。我覺得這門課對於編程是有較大幫助的。
2. 數據結構與演算法設計, 5 學分
神課之一,各種演算法與數據結構蹂躪你的大腦,如果你全部學通,也就掌握了演算法競賽所需的演算法(解題經驗可能比不過打比賽的),教材是著名的人均看完目錄的《演算法導論》
https://book.douban.com/subject/1885170/?book.douban.com3. 計算機圖形學,3 學分
包括諸如 3D,shader,webGL,light tracing 之類的東西。期末是一個 webGL 的場景渲染。
4. Web 應用基礎,4 學分
html+css+js,期末是寫一個知乎(前端頁面)。
5. 面向對象程序設計,智能移動平臺開發,ERP 原理與實施,面向服務的流程管理,2 學分
這幾門課業都不重,學到的也不那麼密集。第一門課學 c++ 抽象類,虛類各種東西,默認你會 c++,對於面向對象會有較深入的理解。第二門課學 android 開發,java。後面兩門是軟體工程管理類的課程,學習軟體工程相關的一些理論。
大三
基本大三之後,課程會少一些,留出時間給你找實習或者去實驗室搬磚。課程基本上是一些進階的課程。
- 數字部件設計,4 學分
神課之一,修完可以徒手從門電路造出 cpu,是我非常喜歡的一門課程,學習 32 位 CPU 的各個部件的實現和組合,verilog 數字部件編程。之前有個在 minecrafe 中造出 cpu 的那個項目的大部分核心理論。
2. 智能系統原理與開發,4 學分
神課之一,修完可以開始煉丹,學習機器學習的各種演算法,實現一些簡單神經網路(卷積圖像識別),但是是用 java 擼演算法,不是機器學習框架。還有一個函數式語言 CLIPS 實現的知識推斷的 project
3. 編譯原理,3 學分
神課之一,修完可以從 0 搭一門簡單的語言,課程走的這本教材
https://book.douban.com/subject/3296317/?book.douban.com4. 高級Web技術,3 學分
@Starkwang 吐槽的課,不知道計院和軟院是不是一樣,我們學的是 java 三件套 Spring, Structs, Hibernate,繼承上面的 《Web 應用基礎》,實現一個知乎(前後端)。
5. 信息安全,計算機網路, 3 學分
信息安全主要學密碼學,密碼攻防,難得的大三還要算算算的課程。計算機網路就是一套套的各種網路協議以及相關的一些東西
6. 計算機系統介面技術,2 學分
當時只有 3 個人修,是一門不屬於三個方向的專業選修,類似的課還有幾門,學的是類似 USB 介面定義,每個腳的定義實現等等。
7. 軟體工程,4 學分,項目管理,3 學分,人機交互,2 學分
偏軟的一些軟體工程的理論,我覺得略顯過時,脫離的業界的一些實踐,但是修完肯定還是能達到或超過市面上的 PM 的平均水平。
大四
大四有一門實習課,可以通過企業實習或實驗室實習完成,和最後的畢業論文。如果你的學分不夠,或因為某些原因缺課(你可以在大二就上大三的課,也可以在大四上大一的課),你可能還有一些課程需要學習。
對於畢業論文,要求是比較高的,在畢業論文導師的指導下完成約10000字-15000字查重低於一定值的學術論文,並有一次答辯。
畢業去向
我所在的這一屆,大致是 1/3 工作,1/3 保研,1/3 出國讀研,具體的吹牛逼環節就略過。
如果是要工作,基本套路就是找實習,我是大二下學期開始實習,實習的好處是掌握未來工作需要的技能,有很多東西學校和公司玩起來是不一樣的,並且好的實習可以成為未來工作的背書。
如果要保研,基本套路就是搞好績點,在前30%較好,然後加實驗室為導師搬磚,很大的可能你畢業論文導師研究生導師都是你實驗室導師。
如果要出國讀研,甚至全獎優質項目讀研,你可以嘗試本科發 paper,保持高績點,具體的套路我就不是特別熟悉了。
後
有些東西沒有提到,比如學生組織和社團,比如各種娛樂活動,比如各種學術講座交流,復旦精神,各種在大學裡要做的想做的,由於超出了問題的限制,可以留待讀者自己挖掘。
對,大部分課程是英語教材/ppt/考試,只有老師講的是中文。
感謝知乎官方的邀請。
復旦大學的軟體工程專業屬於軟體學院,軟體學院是一個新的院系,軟體工程也是一個新的專業,2002年剛成立,至今不到20年。大一在邯鄲校區,大二到大四都在張江校區(據說以後會搬到江灣校區,但是尚不確定)。
通識課程所有專業都要修讀,因此不詳細闡述,本回答涉及的課程為基礎課程和專業課程。由於我讀大學已經有一定年數,最新的培養方案和修讀計劃可能有所變化,因此本回答不保證完全正確,但是至少大部分是正確的。
大一主要修讀基礎課程,包括高等數學A(兩學期)、大學物理B(兩學期)、基礎物理實驗(以前是第二學期,現在是第一學期還是第二學期不確定)、程序設計A(第一學期,編程語言為Java,這門課程以前是專業課程,後來變成軟體學院唯一的基礎課程),以及一門專業必修課程Web應用基礎(第二學期)。
大二開始有較多的專業課程,其中大二的專業課均為專業必修課程,大三和大四有專業選修課程。專業必修課程有:大二,離散數學(兩學期)、計算機系統基礎(兩學期)、數據結構和演算法設計、面向對象程序設計、軟體工程;大三,概率統計、計算機系統工程、計算機前沿講座(兩學期);大四,項目管理、專業實踐與生產實習(兩學期)、畢業論文。
專業選修課程分成三個方向,要求選一個主修方向,該方向的所有課程都要修讀,另外還需要選滿一定學分的跨方向課程。對於三個方向,我根據我的理解概括並列舉其中的部分課程(無法做到列舉全部課程,如果有需要請到網上找培養方案):A方向為應用開發,課程有資料庫設計、智能系統原理與開發、計算機網路結構、面向對象分析和設計等;B方向為系統軟體,課程有數字部件設計、計算機網路、操作系統、編譯原理等;C方向為網路多媒體,課程有計算機網路、多媒體技術基礎、計算機圖形學、人機交互等。
除了專業必修課程和專業選修課程以外,還有任意選修課程。任意選修課程可以是別的院系的課程,可以是專業選修課程多出的學分轉到任意選修課程,也可以是軟體學院開設的任意選修專業課(軟體學院開設的專業課,既不是專業必修課程也不是專業選修課程),課程有專業英語、ERP原理與實施、信息安全、軟體測試、軟體過程、軟體實踐等。任意選修課程大多數面向大三,少部分面向大二。
總而言之,大一的課程注重基礎,數學和物理不用多說,軟體學院開設的基礎課程和專業課程也是最基礎的內容,分別是Java程序設計和網站開發,學會了這兩門課就可以做最基本的編程工作。大二的課程仍然偏基礎,但是課程內容更多,而且有部分課程頗有難度,尤其是計算機系統相關的課程,大二的專業課程都是必修課程,重要性不言而喻。經過兩年的學習之後,需要明確專業選修的方向,在三個方向中選一個方向主修,大三和大四的大多數專業課程都是專業選修課程。到大三結束,大多數課程都應該修讀完畢,大四的課程安排就比較少了,基本都在晚上或者週末,工作日的白天用來實習,大四第二學期寫畢業論文。
實習有兩種方式。一是準備本科畢業後直接工作,則通常在大三的時候開始投實習,從大三暑假開始實習,實習時間可長可短,短則只有大三暑假兩個月,長則到大四結束。二是準備本科畢業後讀研,包括本校保研或者出國讀研,則需要在大四之前找到自己感興趣的研究領域,加入相應的實驗室,在實驗室的經歷可以代替實習。加入實驗室的時間通常是大二第二學期到大三第一學期,最早的可以大二第一學期就加入實驗室,如果決定保研或者出國讀研,則最晚要在大三第二學期加入實驗室,雖然也有大四才進實驗室的,但是個人不贊同這樣做,因為大四就太晚了,可能很多實驗室的老師不願意接收大四的學生。
說到保研,這裡再具體闡述保研考試的流程。保研考試的時間是大四第一學期開學後的第一週或第二週,形式和考研複試相同,包括機考和麪試。機考的內容是數據結構和演算法設計的內容,要求實現數據結構和演算法,以及關於演算法的時間複雜度分析等,在規定時間內完成代碼,然後由考官對每個考生分別面試(機考面試,不同於後面的面試),看代碼實現的正確性,以及問與數據結構和演算法相關的問題,根據代碼實現和麪試情況評分。面試包括英語面試和專業面試,英語面試主要考查英語口語,專業面試的問題通常是專業知識以及實驗室裏研究相關的問題(如果在大四之前就加入實驗室,通常會問到研究相關的問題)。
謝邀?歡迎報考復日大學軟體學院,先不說各種院車,機房,咖啡,列印福利,還有很多超級超級nice的老師,(雖然妹子少)
唯一需要注意的是,很多代碼相關的作業需要好好做~不然學不到東西你真的怪不了別人
以後我不知道,反正現在待在張江校區賊適合學習~人少書多環境好~~
最後,照應主題,歡迎報考復日大學,假期快樂~
(以下是張江校區的書桌照,宿舍外景照和圖書館外景照~~)