Computer Engineering. Prep?

<p>I am a person who likes/loves to go ahead. I'm currently a senior in high school. I want to do something to prepare for computer engineering. Is there any books I can get to self learn some basic topics before college so I can suffer less?</p>

<p>Some info about me... :
Knowledge of coding- zilch
Calculus- taking ap calc ab this year. so far it's easy.
Physics - took ap physics b last year.. it was hard due to the fact that i never took a regular course before jumping to ap. but i think i understand it now.
Stats? - no knowledge.
hardware knowledge? - zilch
computer ap courses? - zilch.</p>

<p>Is there anything I can learn to prepare myself? I heard CompEng. involves code and hardware. and some electrical engineering topics.</p>

<p>So is there some kind of textbook or book i can get off amazon for a low price to prepare myself? Thanks!!!</p>

<p>I plan to apply to:
CSU Poly (both)
CSU SJ
UCI
UCD (not SD)
UCSB (not SD, but SB lol)</p>

<p>so yea...or link me some resources i can learn? or topics i can follow?</p>

<p>Do no recommend a coding type of thing like learn C++ or w/e. I don't have the time for that.</p>

<p>Sorry ,but I think programming would be the highest priority. For computer engineering, just plain C is most useful. Java may be a bit easier to jump into though. If you don’t have time, then why are you trying to prepare in advance anyway?</p>

<p>

</p>

<p>Well, I find programming a bit difficult to understand. I’m already a senior in high school, and I wish I started learning C++ earlier… but I’m in a rush now… so I tried jumping into C++ w/o background on coding. .so yea…</p>

<p>

</p>

<p>Book:
[Welcome</a> to the SICP Web Site](<a href=“http://mitpress.mit.edu/sicp/]Welcome”>http://mitpress.mit.edu/sicp/)</p>

<p>Course lecture videos and other materials:
[MIT</a> OpenCourseWare | Electrical Engineering and Computer Science | 6.001 Structure and Interpretation of Computer Programs, Spring 2005 | Home](<a href=“http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/]MIT”>Structure and Interpretation of Computer Programs | Electrical Engineering and Computer Science | MIT OpenCourseWare)
[CS</a> 61A Home Page](<a href=“http://www-inst.eecs.berkeley.edu/~cs61a/sp11/]CS”>CS 61A Home Page)</p>

<p>C++ is deeper and more difficult to master than most programming languages. I’ve met very few expert C++ programmers (outside of the video game industry) and people who claim to be C++ experts usually aren’t.</p>

<p>My school’s curriculum was mostly taught with Java and C with a smattering of C++ and other languages. It seems like Java and C is a common approach at many schools. It may be easier to start with Java or a similar modern language with garbage collection. Python and Ruby are both pretty nice and easy to learn.</p>

<p>

</p>

<p>I’ll assume that you have until next June or so before graduation, so you have about a year before your freshman year starts. Since you wish you’d started learning C++ earlier, why not start learning now, especially if you have reason to believe you will need it in the future. Even if it’s not used in a class, understanding the programming concepts will help you in your career (assuming you stick with computer engineering). As of now, there is quite a bit of code that is written in C++ for networking products such as middleware. Python is also useful, if you would rather learn a scripting language right now.</p>

<p>Many people find programming difficult when they first start. Take your time and carefully work through the programming exercises. Also study open-source C++, Python, etc. implementations to get a good idea of the various types of programming practices.</p>

<p>I’m a Cal Poly SLO Alum. So I’m naturally biased toward them :p. If you are going to enroll in Cal Poly, I strongly recommend the Software Engineering program. Stats has shown SE grads make more $ than CompSci and computer engineering. You’ll all end up in the same kind of jobs anyway.</p>

<p>As for your question on early start…it’s a really hard question with no straight answer. But I would definitely be recommending against studying C++ as your first programming language. Yes, C++ is important to learn, but it also have a lot of advanced concept built in that many new students just gives up when they encounter it. “Pointer” is one such example. I have a high school friend gave up on computer science and transferred to accounting because he was so fed up on unable to understand this concept, true story.</p>

<p>I know a lot of elite universities teaches Scheme in their 101 classes because of the simple syntax, even when the language does not see much use outside of academia.</p>

<p>As for my personal recommendation…I would recommend JavaScript. Yes, it’s the programming script running on this very page. It’s the script that created this reply message box I’m typing into. And yes I’m recommending it…because:</p>

<ol>
<li>You don’t need anything extra to get started. You’ll only need the Notepad that’s bundled with every Windows install and the web browser you are reading this from.</li>
<li>It’s easier than C, C++, Java, but perhaps harder than Scheme.</li>
<li>It enjoying a big popularity. JavaScript used to be this lowly thing that only runs inside your web browser and every programmer look down upon (and some still do). But not anymore…not since the post bubble web 2.0 era. And certainly not after the release of nodejs. JavaScript is now being ran from anywhere, from your web browser (Chrome, FireFox, Internet Explorer), to your server and cloud (nodejs, Heroku, CloudFoundry), to databases (MongoDB). </li>
</ol>

<p>If you really don’t have time to learn new language…there is still hope. You can learn something that they’ll never teach you in class. That’s is…learning to use Linux system and their command line utilities. You can start by installing Ubuntu, the easiest to install Linux distribution. If you still don’t know how…or just lazy…you can just go buy a Mac. And yes, Mac is Linux. Technically Mac is Unix, but Linux and Unix have little difference.</p>

<p>I don’t really think Scheme is easier for most people. I think most programmers (myself included) found functional programming languages harder to learn than imperative languages.</p>

<p>

</p>

<p>lol. I got stuck on the chapter on Pointers in C++. I don’t understand what it’s saying. xD
As for your javascript recommendation… Yes, I know about it, and know what it does. I do plan on learning it later on around when 2012 begins… or maybe after I take my AP exams. </p>

<p>As for the Ubuntu recommendation… I can run it on a virtual machine but… the learning part… I’m not really sure how to learn the commands. Is there any site you can link me to?</p>

<p>

</p>

<p>At Cal Poly SLO and San Jose State, the Software Engineering major is very similar to the Computer Science major, except the SE major has a few additional software engineering courses instead of a few additional courses in other areas of computer science that the CS major has. CS is somewhat more flexible, and one overview software engineering course (as opposed to several that the SE major has) is likely sufficient for most purposes. Additional CS courses with concepts important in industry software development include algorithms and complexity, operating systems, networks, databases, and security. Some other courses like compilers, graphics, user interfaces, etc. may apply to certain areas and applications.</p>

<p>Pay wise after graduation, the differences are probably not significant, though they may appear so because of the relatively small number of SE majors compared to CS majors.</p>

<p>At San Jose State, gaining admission to the SE major may be significantly easier than gaining admission to the CS major.</p>

<p>I don’t plan on majoring in Software Engineering at all.</p>

<p>

</p>

<p>There is a lot of documentation at tldp.org that you can use to get started learning Linux commands, etc.</p>

<p>IMO, since you have almost a year before you start college, if you really want to learn C++, you should just work through the programming exercises slowly and carefully until you understand what to do. There are many books on C++ available from amazon.com, etc.</p>

<p>

</p>

<p>Software engineering is merely a methodology, a discipline, which varies from employer to employer AND with different industry approaches (Agile/Scrum, Waterfall, etc). My personal problem with SoftE academic programs is that one does not need a separate course for each phase. Just ONE overall software engineering course is needed and the other credits should be used to build up other CS/IS/Math areas.</p>

<p>First the CS vs SE difference…It’s like the difference between science and engineering, where science studies the theory and discover new things and engineering is the application of those theories in everyday life.</p>

<p>Given that you did graduate with a CS degree, there’s still a big chance you’ll end up with “engineer” as title. So why not just go with SE?</p>

<p>I don’t know much about San Jose State’s SE program. But Cal Poly’s SE program does get you more $ than CS, if…the stats given by the CS department were to be believed.</p>

<p>I’m a grad from the SE program. I can give you details on how the Cal Poly’s SE program differentiate from the CS program. It’s true that a lot of our base courses are the same, but the difference start to diverge on your 3rd and 4th year. CS student will focus more on the theory aspect with more course work in theory of computing and algorithm. SE student will focus more on software development process, project management, team leadership. The SE program also includes a year long capstone series of course that partners you with an outside customer to develop a real working software system. The overall goal of the SE program, as stated by Dr. Turner (our program coordinator), is to prepare student for the eventual licensing of software engineer profession.</p>

<p>As stated in the CPA thread in this forum, software engineers are not held liable for any software that they created. It’s been debated for ages for the formal licensing of software engineers. For one thing it’s because these software does not threaten human lives if something does goes wrong with them (unlike other engineering discipline). But as we heard on the news lately, this problem is escalating. Toyota is producing Prius with software operated breaking/acceleration system, can you say this is not life threatening if something goes wrong with the software? This is the reason why formal licensing will eventually happen, and when it does happen…you’ll want to be prepared for it</p>

<p>

</p>

<p>The other engineers who design car parts do not necessarily have Professional Engineer licenses, and are covered by industrial exemption (working as employees of a company and not designing public infrastructure). Indeed, job listings for car companies do not specify Professional Engineer licensing as a job requirement.</p>

<p>Also, even if PE-like licensing happens for computer software professionals, and one is writing software where PE-like licensing is needed (safety critical areas of public infrastructure, if PE licensing is used as the model), the needed preparation for such licensing is still somewhat speculative, “because we have failed to establish an appropriate body of knowledge for software engineers”, according to this master’s degree thesis:</p>

<p>[“THE</a> STATE OF SOFTWARE ENGINEERING MATURITY AND LICENSURE” by Travis Lawrence Dean](<a href=“http://digitalcommons.calpoly.edu/theses/469/]"THE”>"The State of Software Engineering Maturity and Licensure" by Travis Lawrence Dean)</p>

<p>im a senior i n HS right now and im going into comp eng too but for an elctive this year im taking Comp Programing 1 and 2 and we start with Visual Basic and then move into C++ so you may want to get started with VB which is free to download</p>