請教我該如何取捨課程,然後如何學習成為一個程序員?

學生我大二下,目前西南大學,電子信息工程專業,學習成績中上,已經學過電路,模電,數電,單片機,FPGA,AD,高數,線性,概率論,C,正在學高頻,信號系統,微機原理,C++,大三要學習通信原理,數字信號處理,嵌入式等等,我考慮到自己的興趣,我喜歡軟體這一方面的,想要編程,想要以後編程,所以正在學習C/C++,寢室有從小開始編程的,所以在學這個上面有很大便利,我知道語言只是一個工具,目前也不能轉專業了,所以我想請教前輩,達人們,我該取捨哪些課程,比如數學建模等等我就基本放棄了,然後把這些時間用來練習編程,然後我在C/C++入門後,還需要繼續學習哪些知識能幫助我成為一個程序員,和考計算機科學與技術專業的碩士,我知道程序員是一個很大的概念,目前工作目標是比如去B站工作,或者做後台維護,請大家告訴我在屬於軟體範圍的,一個崗位需要哪些知識,每個知識到哪種程度,如果能分階段的回答的話真是感謝,學生我知識有限,前面可能會弄一些笑話,希望前輩、達人們能不惜賜教,多給學生我一些建議,謝謝!

補充:學生我現在大二下了,我的專業也是軟硬都要學一點的,目前根據興趣,學院,室友,就業等影響,所以打算朝著軟體方面發展,我的本科時間也不多了,對比寢室那位從小編程的,我感覺我需要很多的時間來追趕,所以想要選擇出對未來影響可能小的課程來減少時間和精力,節省輸出來的時間精力放在編程上,這些課程我就想把要求定在不掛科就行,當然誰也說不準這些課程對於未來有沒有影響,但相比之下,我感覺編程能力的提升更有實感,我想在本科期間把編程學得比較精通,碼代碼也算是動手實踐了,硬體需要成本,而且難找到合適隊友,且沒有老師指導,確實感到艱難,在此,十分謝謝前輩,達人花費寶貴的時間精力給出建議。

補充2:我找了之前學院發給我們的課程安排,這些是我以後可以選修的,劃線的是我已經選了的,我想做以後關於軟體的工作,所以麻煩請告訴我,這個課程表我該如何選擇,非常感謝!


記得我本科的課程有數學、英語、統計學、編程導論、演算法導論、進階演算法、人工智慧、語言學導論、語意學、哲學導論、心靈哲學、計算語言學、心理學導論、生物心理學、認知心理學、進階認知心理學、神經科學導論等。雖然沒拿到 first hon,但也過得去吧。而且這和我在大二時創業時自學 SQL、C#、http://ASP.NET 沒什麼衝突,我當時也為興趣學了 Direct3D、OpenGL 及一部分計算機圖形學、遊戲引擎相關知識等。我覺得不用「取捨」,在完成基本專業內的課,儘力學習自己有興趣的知識。

個人認為,程序員最基礎的是編程和演算法方面的知識,後者你可能比較缺乏。做軟體的話,最好也可以學一點軟體工程上的,但必需通過實踐來學習。而做研究的話,你需要選擇一些理論或應用方向,例如應用方面有人工智慧(機器學習、計算機視覺)、圖形、數據、網路等等。


學弟你好。我是swu自動化專業的,去年畢業,現在從事嵌入式軟體開發的工作,談談我的一些感受吧。咱們學習的課程大概90%都相同。不過說實話,咱們學校cs方面的實力不怎麼樣,看到你想要考研,建議選擇一些cs牛校(國內的話北郵北航等,據我所知狼廠里過半職員都來自這兩個學校,想進去可以找學長學姐內推),不過說實話做軟體開發更看重你的實力而不是學歷,狼廠里也有專科生,碩士進去也就比本科多2k左右。如果再讓我讀一次本科的話,我會選擇把所有基礎都認認真真學好,而不是去挑選所謂更有用的課程。參加工作後你幾乎是沒有時間再來學習基本課程的,而你工作需要的技能,只要進了大廠並且基本功過硬,就算你毛都不會都能把你培養成能適應崗位的人。基礎課程是內功,內功打好學什麼都快,因為你明白原理,不會只知其然,在工作中,能解決難題的往往也是基本功深厚的人,在團隊內解決問題擔任救星升職加薪不是夢( ????? )。計算機科學的基本科目有哪些可以在知乎上搜其他答案,然後對應這些科目去找相關的經典書籍,雖然計科的書碰到一本就是800多頁的大部頭,但是如果你英語水平過硬的話還是推薦你看英文原版,大部分譯本都有問題,會帶來歧義,平常上課就作為對知識點的補充和查漏補缺吧。苦逼如我以前沒好好學習,現在都是用下班時間惡補基礎。做後端的話我也不懂,大概就是學linux,php,java吧,等大神來答。最後別再說什麼對課程的取捨了,這句話在我看來只是在企圖給想要偷懶的自己找心裡安慰罷了,想要成為大牛,就得肯下功夫,計算機是應用科學,沒有捷徑的。昨天剛回重慶出差,苦逼長水痘發燒打點滴中,語言比較混亂,請見諒。做了一點微小的工作,謝謝大家。


Google 有一個 Technical Development Guide可以參考。

https://www.google.se/about/careers/students/guide-to-technical-development.html

想當程序員先學翻牆總是沒錯的。考慮到關注這個問題的人很可能是剛開始學習計算機的學生,我還是把Google的網頁複製到下面。

--. --- --- --. .-.. . / --. --- --- --. .-.. . / --. --- --- --. .-.. .

Technical Development Guide

This guide provides tips and resources to help you develop your technical skills (academically and non-academically) through self-paced, hands-on learning.

This guide is intended to target Computer Science students seeking an internship or university grad role at Google.

How to use this guide

  • You can use this guide to determine which courses to take, but be sure stay on track with your courses required for your major to graduate.
  • We encourage you to learn more outside of this guide. The more you know, the better!
  • The online resources we』ve cited aren』t meant to replace courses available at your university, but they may help supplement your education or provide an introduction to a topic.
  • The information and recommendations in this guide were gathered through our work with students and candidates in the field. It is a work-in-progress, living document, so be sure to periodically check back for updates.

Note: Following the recommendations in the guide does not guarantee a job at Google.

Tips and Resources

Follow our Google for Students +Page to get additional tips and resources, and connect with other students.

Recommendations and ResourcesTake an 「Introduction to CS」 courseFocus on basic coding instructions

Online resources:

  • Udacity - Introduction to Computer Science
  • Coursera - Computer Science 101

Code in (at least) ONE object-oriented programming language (C++, Java?, Python?)Beginner online resources:

  • Coursera - Learn to Program: The Fundamentals
  • MIT Intro to Programming in Java
  • Google"s Python Class
  • Coursera - Introduction to Python, Python Open Source E-Book

Intermediate online resources:

  • Udacity"s Design of Computer Programs
  • Coursera - Learn to Program: Crafting Quality Code, Coursera - Programming Languages
  • Brown University - Introduction to Programming Language

Learn other programming languagesAdd to your repertoire:

  • JavaScript?
  • CSS HTML
  • Ruby?
  • PHP?
  • C?
  • Perl?
  • Shell? script
  • Lisp?
  • Scheme?

Online resources:

  • Codecademy
  • Udacity - Mobile Web Development
  • Udacity - HTML5 Game Development

Test your codeLearn how to catch bugs, create tests, and break your software

Online resources:

  • Udacity - Software Testing Methods
  • Udacity - Software Debugging

Develop logical reasoning and knowledge of discrete mathOnline resources:

  • MIT Mathematics for Computer Science
  • Coursera - Introduction to Logic
  • Coursera - Linear and Discrete Optimization
  • Coursera - Probabilistic Graphical Models
  • Coursera - Game Theory

Develop a strong understanding of algorithms and data structuresLearn about fundamental data types (stack, queues, and bags), sorting algorithms (quicksort, mergesort, heapsort), data structures (binary search trees, red-black trees, hash tables), and Big O.

Online resources:

  • MIT Introduction to Algorithms
  • Coursera - Introduction to Algorithms Part 1 Part 2
  • Coursera - List of Algorithms
  • Coursera - List of Data Structures
  • Coursera - Book:The Algorithm Design Manual

Develop a strong knowledge of operating systemsOnline resources:

UC Berkeley Computer Science 162

Learn UX designOnline resources:

Udacity - UX Design for Mobile Developers

Learn artificial intelligenceOnline resources:

  • Stanford University - Introduction to Robotics
  • Stanford University - Natural Language Processing
  • Stanford University - Machine Learning

Learn how to build compilersOnline resources:

Coursera - Compilers

Learn cryptographyOnline resources:

  • Coursera - Cryptography
  • Udacity - Applied Cryptography

Learn parallel programmingOnline Resources:

Coursera - Heterogeneous Parallel Programming

Work on projects outside of the classroomCreate and maintain a website, build your own server, or build a robot

Online resources:

  • Apache List of Projects
  • Google Summer of Code
  • Google Developer Group

Work on a small piece of a large system (codebase), read and understand existing code, track down documentation, and debugGitHub is a great way to read other people』s code or contribute to a project

Online resources:

  • GitHub?
  • Kiln?

Work on projects with other programmersThis will help you improve your ability to work well in a team and enable you to learn from others.Practice your algorithmic knowledge and coding skillsPractice your algorithmic knowledge through coding competitions like CodeJam or ACM』s International Collegiate Programming Contest.

Online resources:

  • CodeJam
  • ACM ICPC

Become a teaching assistantHelping to teach other students will help enhance your knowledge in the subject matter.Gain internship experience in software engineeringIn the U.S., internships take place during summer (May–September). Applications are usually accepted several months in advance.


謝邀,不用取捨

大學是交了學費的,課都上了。多涉獵一些知識將來會有幫助。比如信號系統的一些概念在做架構的時候就會有啟發。書到用時方恨少。大學有那麼多時間,喜歡啥 學啥。基本上你專門學什麼,在將來的工作中都不會有什麼立刻有用的地方,大學 不是大專 也不是技校。

如果時間夠,參加開源項目。或者 做做嵌入式的小項目就不錯。arduino 相關有很多有意思的小東西。


就著這個問題,說一下我這兩天解決的一個Bug。

我們有一個兄弟,做了一個晶元裡面的IP,把CPU掛死了,掛死在什麼地方呢,還不知道。這個問題掛了我們2個月,我只好自己出手,我跟他說,你先把你的狀態機給我。他說,這個狀態機很簡單,我給你「講講」就可以了。WTF!

但民主社會嘛,我也能不強迫人家,那就講講吧。講完了,我自己把這個STD畫出來,畫完我就發現,他的狀態機有兩個狀態的定義,在不同的情形下,有兩種不同的應激響應。我就知道,這個STD根本就沒有完成建模,有無數的破綻可以挑。我和他反覆確認流程多次,然後才把完整的STD畫出來,由於當初沒有STD建模(建模過程需要化簡狀態數量,這個步驟沒有做),這個STD奇複雜無比,拿著這樣的STD,我再去和寫驅動的人對訪問模型,然後現在這個問題已經定位了,問題就是軟體使用了一種模型,在原來的硬體的流程考量中沒有考慮到。

在整個過程中,這位兄弟一直對STD,文檔表述這樣的「小道」不以為然,沒有興趣聽我討論,卻熱衷於規範細節,JTag,虛擬機這樣所謂高大上的知識。但他在這樣的知識中飛來飛去飛了2個月,什麼鬼東西都沒有給我拿出來。

我想說的是,你以為基礎知識太小兒科,而我認為,那些所謂C++ Primer,Android,Arduino才是小兒科呢。


總覺得大家說得都很有道理,但是我不是確保能畢業過來的。在學校的時候做了一些外包項目賺錢,所以覺得有沒有畢業證無所謂。如果達不到這個水平,還是先保證能畢業——對家裡好交待。。

我和題主一樣也是學電子信息工程的,不過我大學比較一般——二本墊底的那種,並且還掛了六掛。

在我們學校掛六科是不能畢業的,但是拿省級比賽的證書可以補分,所以我在大三下學期參考了三個省級比賽,然後拿了兩個獎。

通信專業是以數學為主,所以這六科裡面有四科是數學。。。還有兩科是游泳——一個不喜歡遊戲的南方人。

把考試複習的時間拿去看計算機書了——大學大概看了四百本左右。

突然覺得自己不夠聰明,默默繼續去寫代碼了。

如何閱讀四百本書

在那篇《程序員的內置索引與外置的Google》中,我們提到過:學習的過程中我們只需要不斷地去構建我們的索引即可

所以作為一個偵探顧問,福爾摩斯需要不斷地汲取各個領域的一些知識:

並且只在少數領域成為專家——必須要騰出空間給其他知識點,所以作者 Arhur Conan Doyle的那句話那經典:

即:

人的大腦如同一間空空的小閣樓,對放置進去的傢具要有選擇。

下半句是:

只有傻瓜才會把他碰到的各種各樣的破爛不加選擇地裝進去。不然,無用的東西會擠占太多的空間,或者許多東西相互雜處,條理不清。

即:

在今天這句話就變成:

構建你自己的索引目錄,同時使用搜索引擎來完成構建。

看多了書之後,大部分的計算機書看目錄就夠了。

看多了書之後,大部分的計算機書看目錄就夠了。

看多了書之後,大部分的計算機書看目錄就夠了。

成為Consultant

受最近項目的影響,昨天我在翻閱《諮詢的奧秘》、《麥肯錫方法》,發現在後者的最前面寫了一句話:

麥肯錫顧問大多數是通才,他們博學卻涉獵不深,隨著經驗的積累和職位的提升,他們對涉獵行業的了解逐步加深。

在之前那篇《為什麼說全棧工程師是未來?》中,我們已經闡述了足夠多的專家與全棧工程師的對比。

通才從某種意義上來說就是又大又薄的山東煎餅:

而專家就是月餅,那麼很厚就像月餅一樣:

好了,掩飾完畢。

綜上所述,如果把我們的餅變厚,那麼我們就可以取得一個好成績了。而這也意味著,我們就不能涉獵更多的領域。那樣,我們就不能成為一個Consultant——諮詢師、顧問。

============2016.05.08更新==================

1. 更新GitHub截圖

2. 添加如何在大學四年里閱讀四百本書

3. 為什麼目標是成為Consultant

最後說一句:每天12點前睡,然後七點多起床的——三遍

足夠的睡眠,才能更好的前進。

足夠的睡眠,才能更好的前進。

足夠的睡眠,才能更好的前進。


利益相關:藥學轉CS,未轉系,目前大三,大三前的暑假下決心開始轉CS,拿到了微軟和阿里的暑期實習offer。跟你的情況類似,但是專業跨度更大,幾乎就是毫無聯繫的兩個專業。

先說答案:計算機幾大基礎課:計算機網路,資料庫,軟體工程,操作系統,數據結構(演算法),編譯原理或計算機硬體。對於找工作而言,最重要的是演算法和數據結構,對應屆生的面試,除了語言(c++/Java)和做過的項目之外,基本上就是考演算法,演算法和語言要做到精通,其他的略懂即可,不需要你對你投的崗位有多少了解,大廠進去之後都會有人培訓你的。比如我面微軟的操作系統部門,全程就沒問過任何操作系統的知識,百分之八十都是給演算法題然後開始做,然後問一些項目之類的。

針對你的情況,建議先學習《演算法分析與設計》,再選一門《數據結構》(當然這個課可能不在你培養方案里,如果你不想上課,自學也可以,不過上課可以督促你學習)。c++和java可以選擇一門進行學習。這三門課如果真正能學好,BAT的面試百分之七八十都能答上來。

《資料庫》和《計算機網路》也比較重要,可以放在第二階段。最後可以上《軟體工程》,通常會讓小組合作做一個小軟體,是一個非常好的實戰鍛煉機會。如果時間緊的話,這三門課也可以一個學期來上。

至於其他的課,《操作系統》不要選了。雖說操作系統是非常重要的基礎,但是平時用到的機會不多,而且通常os課都比較虐,所以對於非科班出身、時間比較緊張的人來講,可以放在大四下這種無關緊要的學期來學。至於web網站移動APP什麼的,有餘力有興趣也可以學一下。雲計算是一個快速發展的領域,如果你打好基礎後,有時間有興趣可以學習。

至於電子方向選哪些課壓力比較小能保證畢業,這個抱歉我不太了解,不過你可以諮詢一下你的學長學姐等,看看哪些課比較水。

加油!共勉!


同樣是電子信息工程畢業,電信課多是出了名的,哥們,你確定你捨棄幾門還能正常畢業?

其實沒那麼多講究,真想兩全其美就早睡早起,11點睡覺6點起床,大把的時間給你編程。


同樣本科電子信息,研究生軟工,建議你還是好好把專業學好,課餘學好c++和數據結構演算法,了解操作系統,網路基礎,就夠了,研究生的時候轉cs,等到工作之後,你就會發現你的優勢了。

忘了說一句,什麼物理,模電,電磁場不是特別重要,最重要的英語和數學。


http://cs61a.org

http://cs61b.ug/sp16/about.html

http://www-inst.eecs.berkeley.edu/~cs61c/sp16/

UCB CS61系列課程

可能學完就能出來工作系列


?理想與現實的差距問題

?軟體工程生的理想是硬體開發,很多軟體工程學生就買了個板子,然後寫個簡單驅動,燒錄測試,看著跑馬燈閃爍自嗨

通信與電子專業的學生就想學個編程語言,做個小型遊戲,然後默默的看著界面自嗨

?直到軟體工程的板子生走進電子專業的硬體實驗室才覺得人生圓滿。通信與電子專業的軟體生學了各種編程語言覺得此生無憾。

?哎,都是理想惹得禍。就不能湊合著現實搞一搞?

話說回來,沒有理想與鹹魚有什麼區別。生命的意義就在於折騰,不過折騰前確保自己的專業學科紮實 。


謝邀。

10萬行代碼。


現在大三,本科211電子信息工程,上的課程和你一模一樣,大三上的時候,因為對軟體感興趣,開始自學Java。但是我們專業的課程屬於那種你認真學,也不一定會掌握,你要把精力放學專業課上,那根本就沒時間學編程。所以我對自己要求是偏硬體的專業課,只求能過,大概了解課程要求我們學什麼,比如模電,數電,微波技術,電磁場等等,對偏軟的專業課,要認真學,熟練掌握,如計算機網路,計算機組成原理,微機原理,Java,資料庫,數據結構(我也不知道為什麼我們學校給我們開了這個多計算機的課程)。對偏硬體的課程,老老實實把老師布置的作業做好,看著答案一步步模仿做也行,考試基本上能過,每個星期抽個幾個晚自習敲下代碼,周末拿個一整天來敲代碼,堅持下去,到了大三,面臨考研還是找工作,也不會像我這樣很慌。


做後台開發要懂Linux,腳本語言,操作系統,計算機網路,資料庫。

票數最高的三個回答竟然一字不提。無語了,還有一個列了一堆沒太大幫助的課程。


更一下近況,當時寫完回答後沒多久找了一個Ruby實習,做了大半個暑假,然後開始踩坑前端。到今年二三月份開始準備面試呢,學了不少前端的知識。現在又找了一個前端的實習哈哈哈哈。漸入佳境

————————整整一年了————————

通信轉到計算機的說說自己的想法。
題主身在電子信息還能成績中上,我很佩服的。大一下時我就產生了題主現在的想法,不同的是我轉專業了。
我覺得,作為學生,成績能保持住就保持著,尤其你還想考研,成績好點盡量能保研也挺好。我大二學的計算機課程沒用心聽過幾門,現在成績也算中上吧,專業排名10%左右。
個人觀念是:主要心思是學習技術,GPA什麼的有個底線就好,因為沒有保研的打算,所以不會去刷績點。
我這學期時間非常緊,上學期翹了不少課,這學期基本滿勤,還要保證各種項目不拖後腿。我基本除了上課和寫作業,就不會看課程的書,其餘時間都是擠出來學編程,學書本不教的東西。考前三天突擊基本就能80+... 所以我覺得你不必「放棄」什麼課程,學會把握空閑時間吧,別一到周末就是看電影逛大街睡大覺就可以啦。

我大一暑假才開始接觸用C語言編寫簡單演算法題以外的編程技術。很有幸帶我的那個學長,讓我使用Linux和Ruby來進行Web後端開發,在那個暑假,我學會了:

  • Ubuntu常用操作
  • Git基本操作
  • 認識MVC架構
  • HTML/CSS 基本能表現出一個頁面需要表現的內容(很醜
  • Rails後端開發入門

兩個月學的也好不到哪去,直到現在我還在學習git、CSS、Rails,但看著自己開發出來的網站(很簡陋,一個留言板,有註冊登錄功能,可以管理留言增刪改查)真的很長信心很激發興趣。如果一開始用Java甚至C++去學這些,我可能會死。。

按照題主現在的狀態,我想建議你學一門動態語言,Ruby/Python/PHP來入門後端開發,快到暑假了,兩個月會給你不一樣的世界。HTML/CSS這些基本的也得學些,僅僅入門的話要不了幾天。
在此期間你會遇到很多障礙,你會學習科學上網,Google到很多StackOverflow的東西。
在此之後,你就會看到更廣的世界,對軟體開發會有新的認識,也就不那麼迷茫了。

學點Web開發,對於以後想學移動端(Android/iOS等)也很有幫助,熟悉MVC也會幫助理解很多東西。

我的C語言考試專業第一,真的沒什麼卵用,現在都忘差不多了。學C/C++最重要的就是帶我了解編程思想,之後再用什麼語言,真的很快就可以入門。我沒搞過ACM,現在在和幾個學長做一個網站,負責後端開發。自己也在寫一個個人網站,學習前端開發的技術。最近覺得演算法能力以後可能會比較重要,所以繼續學習C++,每天做一兩道LeetCode上的題目,但這個只是順便吧。世界那麼大,技術那麼多,學不過來的。
你不用從一開始就擔心什麼基礎課都沒學過,怕干不過科班。這麼說吧,科班同學還是有一大幫菜比,題主這學習能力,認真學上一暑假,就能幹掉一半隔壁專業的。
至於計算機基礎課程,暫時也不用太糾結,先學點容易出成就的培養興趣,不要天天面對cmd那個黑框了...之後遇到瓶頸或者有興趣再去學習計算機原理方面的知識。畢竟學Web開發入門的時候,學什麼電路與電子技術基礎計算機組成原理與體系結構真的只能叫浪費精力,而數據結構與演算法離散數學這樣的課,可以途中慢慢接觸學習。

目前工作目標是比如去B站工作,或者做後台維護

對於你暫時的目標,也很符合我的情況,學習Web開發。按照和我差不多的路線也沒有什麼問題。

  1. 使用Linux,可以選擇Ubuntu,雖然會折騰點,習慣了還是很方便的。(一周來適應)
  2. 學習HTML/CSS基礎,跟著W3School 學,能寫個靜態頁面,會點布局就可以啦。(一周左右,HTML標籤啥的半天就能上手)
  3. 學習一門動態語言Ruby/Python/PHP來入門後端開發,如果是Ruby的話建議學習Sinatra Sinatra: README (Chinese),就一頁文檔,看幾遍基本就可以寫個伺服器了。說實話我看了三天...才理解路由(半個月基本能做出來一個動態網頁,基本增刪改查操作,配合ActiveRecord 上手資料庫也沒問題)
  4. 學個流行一點的框架,比如Ruby中的Rails,能到這一步,剩下的自己也會比較清楚了,比如轉Java啊,或者一不小心對前端感興趣了起來,搞起了近些年來要上天的JavaScript...

必備:

  • 英語閱讀能力(能較流暢的看計算機相關文檔就行,專業英語和普通英語還是不同的
  • 保持興趣(編程,會遇到很多坑,如果你不會出現「卧槽這到底哪裡又出問題了,比女朋友還難理解,不玩了!」這樣的情況,那就沒問題
  • 踏實(路很長,多敲代碼

我給的建議比較明確,適合需要很快入門實踐的,題主當作參考就好。如果題主想搞研究類的,可以忽略大部分內容。
我現在的狀態還行,就是時刻覺得自己技術水平還不夠。雖然在同學中算會點技術的,但一考慮到找工作,還是有很長的路要走。

我說這麼多也沒啥乾貨,目的就只有想幫題主樹立信心吧。加油!共勉~


很多其他人都說了,我只補充兩點。

一,很多基礎課紛繁雜亂,你大二了,要及早定下自己的方向,然後制定學習路線,不在路線之內的課程水過去,別浪費時間再上面。

二,英語學好點,只有好處沒壞處。


首先你把c語言的知識弄清楚,新手考慮用VS,寫代碼,搞清楚你的代碼在內存中是如何操作,一步一步的追蹤數據的變化,通過VS的返彙編,了解基本的彙編語句。學習過程中,首重實現,多摸代碼,先做,做完了,再去看概念。代碼規範,你可以看下林銳的高質量c/c++編程。你想做後台的話,linux操作環境,socket編程,多線程編程,資料庫…學習的時候首重實現,概念其次。不管簡單還是難,先做出來再說。然後再優化。

重要的事情說三遍:多敲代碼,多敲代碼,多敲代碼。


本人大三下,專業課程和題主基本一樣,電子類

目前《C++ primer》《C++ primer plus》大概看完了,大概也看了一半 CSAPP,由於之前弄了一個多月 xv6,後來明白這個和我的計劃方向相反,就先掛起來了,想先擼一遍 leveldb,但是大概看了一下代碼,覺得除了那幾本書的基礎,還需要懂得更多像計算機原理、並行編程、資料庫、數據結構、演算法什麼的才行,以後發展的話還缺不了網路編程。還在看書,共勉。


大學計算機科學與技術專業,當時覺得最沒用的課程是《軍事理論》。

現在在一家軍事模擬公司做程序員,呵呵。

其實我想說的是:

學習上,你的時間還沒有被充分利用到需要考慮取捨課程的程度,而是需要把更多空閑時間分配給你喜愛的課程而已。


本科電子,研究生計算機

本科掛了4門,電磁場畢業都沒過

但是我寫了30w+行的代碼


推薦閱讀:

如何開始用 C++ 寫一個光柵化渲染器?
大家都在勸退材化環生,那麼除了cs或金融還有好的出路嗎?
是否每局Windows紙牌遊戲(Solitaire)都是可以被解決的?也就是說每局都可以贏。
軟體崩潰後,提示發出的「發送錯誤報告」到底有沒有用?

TAG:程序員 | 軟體工程 | C編程語言 | 計算機科學 | 電子信息工程 |