Career

Career

What should I be doing? What makes me passionate? 

  1. General things I enjoy:

    1. Problem solving (especially with business and technology)

    2. Drawing

    3. Creativity

    4. Being around people that have interesting things to say. Generally, these are conversations with other nerds. 

    5. Nature

    6. Gardening/farming

    7. Green energy?

      1. I think I enjoy water issues. I really like the desalinization idea and just making that more efficient. 

    8. Building communities

  2. What makes me passionate?

    1. I am passionate about working on my own product. That is, I could spend hours and hours working on my own product and lose track of time.

  3. Checklist for Applying:

    1. Core classes completed

    2. Transcript from each college

    3. Recommendation letters

      1. Received first one from Professor Elaine Haight (in foothill college subdirectory)

  1. Options

    1. Go for a Master’s Degree in Environmental Engineering

    2. Go for a Master’s Degree in Computer Science with an emphasis in Software Engineering (seems to be best choice so far)

      1. Goal: To become a software engineer/full-stack developer

      2. Pros:

        1. Core understanding of computer science: Would be beneficial towards my understanding of core computer science

        2. Money: I could demand a higher salary from companies

        3. More Opportunities: Expands my opportunities. Go into fields that I wouldn’t have thought possible before. Solve more complex problems. Might be more fun. I could also use my skills to program different parts of the ranch.

        4. Confidence: Give me more confidence in my programming abilities

        5. Low Cost: Potentially $6k if doing online Master’s in Comp Sci Program at Georgia Tech

        6. Expand Teaching: Can teach at college and universities

        7. Expand abilities: Have the confidence and knowledge to build whatever I want. 

      3. Cons

        1. Enjoyment: I might not enjoy it at all. I really need to think about whether or not school is something I’m ready for.

        2. Stress: Might get anxiety again, which would set me back. 

        3. Time Cost: Time would be spent getting a master’s instead of working.

      4. Next steps:

        1. Masters Program Requirements (Only choosing masters programs that are affordable and that have software engineering specialties; need to research on each of these!). 

          1. Factors to consider when choosing a school

            1. Apprenticeship program to offset cost. Note: A lot of programs give preference to phD applicants, so you need to ask the school if they offer apprenticeships for masters students.

            2. Weather

            3. Software engineering specialty

            4. Proximity to family

            5. Networking opportunities

            6. Cost: Though, may not be as important if apprenticeship program, scholarships, grants work out.

            7. http://www.thebestschools.org/rankings/20-top-graduate-programs-computer-science-application-process/ (great article on factors to consider and choosing which schools to apply to)

            8. Deadline: February 1st

          2. Georgia Tech online: 

            1. https://gist.github.com/OSP123/eed01ec9398aa5154fdd

            2. Course Option: http://www.cc.gatech.edu/future/masters/mscs/program

            3. Georgia tech seems to be the best option so far, since cost is only $6,000 and you can and are encouraged to take 2 classes a semester, rather than a full courseload: https://www.insidehighered.com/news/2014/06/06/one-semester-students-satisfied-unfinished-georgia-tech-online-degree-program

            4. Need for Assistantship? 

              1. For online program, no.

              2. For brick-and-mortar program, yes.

            5. Deadline

              1. Spring 2015: Sept. 8 to Oct. 26

            6. Pros

              1. Specialization in Databases and Software Engineering

            7. Status:

              1. Contacted Judy ([email protected]) about admissions requirements. Waiting on response.

                1. https://gist.github.com/OSP123/122ff1f6280cf676880d

              2. Basically, just need the comp sci courses which can be taken in undergrad or mooc. 

          3. University of Texas, Austin? (I think they have software engineering)

            1. https://www.cs.utexas.edu/graduate-program/

            2. https://www.cs.utexas.edu/graduate-program/prospective-students/admissions-faq

            3. Pros

              1. Offer tons of financial assistance, including assistantship

              2. Cool area

              3. Great food

              4. Nerdsssssss

              5. Cheap lodging

              6. Great program for masters (especially for those who don’t have a masters in Comp Sci)

              7. Great school

              8. Networking?

            4. Cons

              1. Far away from family and support

              2. No beach

              3. Shitty weather

            5. Deadline

  1. FALL – The ApplyTexas and CS department applications and status pages are not connected.  Both applications are Required.

  2. ApplyTexas – December 1 to be sure you have your UTEID assigned in time to submit the departmental application by the recommended December 7th deadline. Please note that 'MyStatus' is where you upload information to ApplyTexas.  It is not connected to the CS department application and status page. 

  3. CS Department – We strongly encourage submission of applications by December 7th as your reference letter writers receive email requests for a recommendation after your application is submitted not when it is saved.  Submitting an application by December 7th will allow your letter writers time to submit their recommendations by December 16th when we will start our review process. While we will leave our application system open until December 15th and review all application files submitted by that date, evaluation of your application would be more difficult if the letters of recommendation have not arrived. 

  4. Letters of recommendation submitted to CS department application – DECEMBER 16

  1. Recommended Classes taken beforehand (can also be taken in the masters program):

    1. CS 345 Programming Languages or CS 375 Compilers

      1. Javascript, Python, and Java

    2. CS 429 Computer Organization & Architecture

    3. CS 439 Introduction to Operating Systems

    4. CS 353 Theory of Computation or CS 357 Algorithms or CS 331 Algorithms and Complexity

  1. University of Maryland College Park?

    1. https://www.cs.umd.edu/grad/catalog

    2. Pros

      1. Lots of financial assistance

      2. Decent ranking

      3. Familiarity: Located in D.C., so I’m used to the area. Plus, I know some people there. 

      4. Research opportunity in software engineering (and a lot of other areas), which might be kind of cool

      5. Fun area

      6. Networking?

      7. Connect with Em and maybe do research project with her involving the congress app

    3. Cons

      1. Shitty weather

      2. Requires a scholarly paper, but not a thesis. Kind of weird

      3. Lived there already, so might be boring this time around. Then again, that might be good considering that I’ll probably be stressed to all hell. 

    4. Deadline: December 15

      1. http://www.cs.umd.edu/grad/catalog

  2. UCSD

    1. http://cse.ucsd.edu/node/58

    2. Pros

      1. Awesome weather

      2. Awesome People

      3. Close to family

      4. beach is around the corner

      5. familiarity with surroundings

      6. Amazing program that allows me to take interdisciplinary courses, including software engineering (I think)

      7. Relaxing

      8. Tons of financial aid

      9. Networking: Lots of friends of friends that I can connect with

    3. Cons

      1. Might be a bit boring?

    4. Next Steps

      1. Contacted UCSD. Waiting on response

    5. Deadline

      1. December 15, 2014

  3. Safety Schools

    1. Cal State Fullerton

      1. http://www.fullerton.edu/ecs/mse/

    2. Cal State University of Northridge

      1. http://www.csun.edu/engineering-computer-science/computer-science/master-science-software-engineering

  4. Deadline: All seem to be around December 15. 

  1. Determine specialization

    1. There are different specializations based on what I want to get into, in addition to the core classes. I think I’d like to go into either the Machine Learning specialization or the Software Engineering/Databases specialization.

      1. Machine Learning

        1. Get to build AI and cool stuff like that. For instance, Google cars, automated marketing, etc. However, it does seem like it could get really difficult and I would really have to be on top of my shit. I’ll have to look into it.

      2. Software Engineering/Databases

        1. http://www.omscs.gatech.edu/specialization-databases-software-engineering/

        2. Core classes for software engineering. I think I might do this one, since it allows me to become a real software engineer and build stuff. I don’t really like theory and I enjoy just building things. This one might be the best for that.

      3. Game Programming 

  2. Conclusion of Courses and things I need to learn for core classes:

    1. Pre-Calculus

    2. Calculus series

    3. Linear Algebra

    4. Operating Systems Course

    5. C/C++ programming and concepts

    6. Network programming

    7. Python

    8. Virtual Machines

    9. Java – Taking first of Comp Sci classes using Java in Spring Quarter at Foothill

    10. Intro to Software Engineering or CS 6300

    11. Introduction to Machine Learning:  Georgia Tech's CS 3600 or CS 6601

    12. Computer Organization Course

    13. Linux

    14. Discrete Mathematics: http://www.mhhe.com/math/advmath/rosen/

    15. CS 1332 or Udacity’s CS 101

  3. David’s (friend with a master’s in Computer Science) Recommended Path

    1. Programming (C/C++ plus data structures/Python/Java)

      1. OBJECT-ORIENTED PROGRAMMING METHODOLOGIES IN JAVA at Foothill Community College

      2. JAVASCRIPT FOR PROGRAMMERS at Foothill Community College

    2. Computer Organization (where you learn assembly and how a computer works)

    3. Some basic computer architecture

    4. OS

    5. Networking

  4. Google recommends these classes:

    1. http://www.google.com/edu/tools-and-solutions/guide-for-technical-development/index.html

      1. Introduction to CS Course

        1. Notes: Introduction to Computer Science Course that provides instructions on coding

        2. Online Resources:Udacity – intro to CS course, Coursera – Computer Science 101

          1. OBJECT-ORIENTED PROGRAMMING METHODOLOGIES IN JAVA at Foothill Community College

      2. Code in at least one object oriented programming language: C++, Java, or Python

        1. 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

        2. Intermediate Online Resources: Udacity's Design of Computer Programs, Coursera – Learn to Program: Crafting Quality Code, Coursera – Programming Languages, Brown University – Introduction to Programming Languages

          1. OBJECT-ORIENTED PROGRAMMING METHODOLOGIES IN JAVA at Foothill Community College

      3. Learn other Programming Languages

        1. Notes: Add to your repertoire – Java Script, CSS, HTML, Ruby, PHP, C, Perl, Shell. Lisp, Scheme.

        2. Online Resources: w3school.com – HTML Tutorial, CodeAcademy.com

      4. Test Your Code

        1. Notes: Learn how to catch bugs, create tests, and break your software

        2. Online Resources: Udacity – Software Testing Methods, Udacity – Software Debugging

      5. Develop logical reasoning and knowledge of discrete math

        1. Online Resources: MIT Mathematics for Computer Science, Coursera – Introduction to Logic, Coursera – Linear and Discrete Optimization, Coursera – Probabilistic Graphical Models, Coursera – Game Theory

      6. Develop strong understanding of Algorithms and Data Structures

        1. Notes: Learn about fundamental data types (stack, queues, and bags), sorting algorithms (quicksort, mergesort, heapsort), and data structures (binary search trees, red-black trees, hash tables), Big O.

        2. Online Resources: MIT Introduction to Algorithms, Coursera Introduction to Algorithms Part 1 & Part 2, List of Algorithms, List of Data Structures, Book: The Algorithm Design Manual

      7. Develop a strong knowledge of operating systems

        1. Online Resources: UC Berkeley Computer Science 162

      8. Learn Artificial Intelligence Online Resources:

        1. Stanford University – Introduction to Robotics, Natural Language Processing, Machine Learning

      9. Learn how to build compilers

        1. Online Resources: Coursera – Compilers

      10. Learn cryptography

        1. Online Resources: Coursera – Cryptography, Udacity – Applied Cryptography

      11. Learn Parallel Programming

        1. Online Resources: Coursera – Heterogeneous Parallel Programming

    2. Recommendations for Non-Academic Learnings

      1. Work on project outside of the classroom.

        1. Notes: Create and maintain a website, build your own server, or build a robot.

          1. Doing this with the personal project and putting projects on there

        2. Online Resources: Apache List of Projects, Google Summer of Code, Google Developer Group

      2. Work on a small piece of a large system (codebase), read and understand existing code, track down documentation, and debug things.

        1. Notes: Github is a great way to read other people’s code or contribute to a project.

        2. Online Resources: Github, Kiln

      3. Work on project with other programmers.

        1. Notes: This will help you improve your ability to work well in a team and enable you to learn from others.

      4. Practice your algorithmic knowledge and coding skills

        1. Notes: Practice your algorithmic knowledge through coding competitions like CodeJam or ACM’s International Collegiate Programming Contest.

        2. Online Resources: CodeJam, ACM ICPC

      5. Become a Teaching Assistant

        1. Notes: Helping to teach other students will help enhance your knowledge in the subject matter.

      6. Internship experience in software engineering

        1. Notes: Make sure you apply for internships well in advance of the period internships take place. In the US, internships take place during the summer, May-September, and applications are usually open several months in advance.

        2. Online Resources: google.com/jobs

  5. Reddit Thread mentioned another approach, plus an elaborated version of the other one

    1. Asymptotic complexity

      1. Big O Notation? 

    2. Asymptotic analysis of pseudo code/algorithms

      1. I think this is still part of Big O Notation? 

    3. Implementation of efficient data structures (although in practice you'd use the STL/Boost/Some other library)

      1. CS 1A – CS 1C

    4. Knowledge of programming languages, static vs dynamic, strong vs weak typing, how do namespaces effect names, etc.

      1. CS 1A – CS 1C

    5. Basic knowledge of graph problems (CS 1C), Hamiltonian path, shortest path (CS 1C)

    6. Basic knowledge of NP problems

      1. No idea

    7. Basic knowledge of architecture and OSes (One course had a "make your own malloc" as its first homework assignment and it was expected to be easy)

      1. http://www.quora.com/Is-there-any-systems-Operating-systems-Distributed-Systems-course-being-offered-online

      2. https://www.mooc-list.com/tags/operating-systems

  6. University of Texas’ Recommendations

    1. CS 345 Programming Languages or CS 375 Compilers

      1. CS 1A – CS 1C

    2. CS 429 Computer Organization & Architecture

      1. Equivalent at Foothill: CS 10 COMPUTER ARCHITECTURE & ORGANIZATION

    3. CS 439 Introduction to Operating Systems

      1. Nothing in Foothill

    4. CS 353 Theory of Computation or CS 357 Algorithms or CS 331 Algorithms and Complexity

      1. CS 1C ADVANCED DATA STRUCTURES & ALGORITHMS IN JAVA

  1. Claire from Stanford’s Counseling mentioned that I should:

    1. Take classes in relevant fields at community college or extension

    2. Mentioned exactly which classes to take:

      1. https://gist.github.com/OSP123/64329efcea157a67c890

        1. http://web.stanford.edu/class/cs106a/: Programming Methodology

        2. http://web.stanford.edu/class/cs106b/: Programming Abstractions in C++

        3. http://web.stanford.edu/class/cs103/: Mathematical Foundations of Computing

        4. http://web.stanford.edu/class/cs107/: Computer Organization and Systems

  2. Where to take classes for college credit

    1. http://www.cvc.edu/

    2. Einar mentioned a good point. Take classes that look like they’re the equivalent at Stanford. Then, ask the people at Stanford if the course is equivalent via email. If it does, then you’re good to go.

    3. Common Core math classes: 

      1. Calculus Series

      2. Linear Algebra and Differential Equations

      3. Discrete Math

    4. Harbor College for Calculus series

    5. Foothill for CS1A, CS1B, CS1C, and other comp sci courses that can be helpful.

  3. Schedule

    1. 1st Quarter at Foothill College (January 5 – March 30)

      1. CS 1A (programming with Java)

        1. This course is a systematic introduction to fundamental concepts of computer science through the study of the Java programming language intended for Computer Science majors as well as non-majors and professionals seeking Java programming experience. Coding topics include Java control structures, classes, methods, arrays, graphical user interfaces and elementary data structures. Concept topics include algorithms, recursion, data abstraction, problem solving strategies, code style, documentation, debugging techniques and testing.

      2. CS 22A (Javascript for programmers)

        1. Introduction to object oriented programming in JavaScript. Topics include: client and server side programming, Model/View/Controller architecture, current tools and testing methods, interaction with HTML and CSS, Document Object Model, XML and JSON. Students will have practice writing programs for mobile web browsers and creating dynamic web pages including animation.

    2. 1st semester at either Harbor college (February 9th – June 7th)

      1. Pre-Calculus

    3. 2nd Quarter at Foothill College (TBA – June 26)

      1. CS 1B (programming with Java part 2)

        1. This course is a systematic treatment of intermediate concepts in computer science through the study of Java object-oriented programming (OOP) intended for Computer Science majors as well as non-majors and professionals seeking intermediate-level Java experience. Coding topics include Java interfaces, class extension, generics, the Java collections framework, multi-dimensional arrays and file I/O. Concept topics include OOP project design, inheritance, polymorphism, method chaining, functional programming, linked-lists, FIFOs, LIFOs, event-driven programming and guarded code.

      2. CS 21A Programming in Python (tentative) 

        1. This course introduces students to the Python language and environment. It is intended for CS majors as well as non-majors and professionals seeking Python programming experience. Covers topics including object oriented programming, elementary data structures, modules, algorithms, recursion, data abstraction, code style, documentation, debugging techniques and testing.

    4. Fall 2015 Semester at Los Angeles Harbor College (TBA – TBA)

      1. Calculus I

    5. 3rd Quarter at Foothill College (TBA – TBA)

      1. CS 1C Advanced Data Structures and Algorithms in Java

        1. This course is a systematic treatment of advanced data structures, algorithm analysis and abstract data types in the Java programming language intended for Computer Science majors as well as non-majors and professionals seeking advanced Java experience. Coding topics include the development of ADTs from scratch, building ADTs on top of the java.util collections, array lists, linked lists, trees, maps, hashing functions and graphs. Concept topics include searching, big-O time complexity, analysis of all major sorting techniques, top down splaying, AVL tree balancing, shortest path algorithms, minimum spanning trees and maximum flow graphs.

      2. CS 18 (Discrete Math)

        1. Discrete mathematics: set theory, logic, Boolean algebra, methods of proof, mathematical induction, number theory, discrete probability, combinatorics, functions, relations, recursion, algorithm efficiencies, graphs, trees.

    6. Winter or Spring Semester at Los Angeles Harbor College

      1. Calculus II (don’t take any other classes with this if taking in Winter)

    7. 4th Quarter at Foothill College (TBA – TBA)

      1. CS 10 Computer Architecture and Organization

        1. The course covers the organization, architecture and machine-level programming of computer systems. Topics include mapping of high-level language constructs into assembly code, internal data representations, numerical computation, virtual memory, pipelines, caching, multitasking, MIPS architecture, MIPA assembly language code, interrupts, input/output, peripheral storage processing, and comparison of CISC (Intel) and RISC (MIPS) instruction sets.

    8. 4th Semester at Los Angeles Harbor College

      1. Calculus III

    9. 5th Quarter at Foothill College (TBA and tentative)

      1. Math 2A: Differential Equations

        1. Differential equations and selected topics of mathematical analysis.

      2. Math 2B: Linear Algebra

        1. A first course in Linear Algebra, including systems of linear equations, matrices, linear transformations, determinants, abstract vector spaces and subspaces, eigenvalues and eigenvectors, inner product spaces and orthogonality, and selected applications of these topics.

    10. 6th Quarter at Foothill College

      1. CS 18 (Discrete Math)

        1. Discrete mathematics: set theory, logic, Boolean algebra, methods of proof, mathematical induction, number theory, discrete probability, combinatorics, functions, relations, recursion, algorithm efficiencies, graphs, trees.

  4. Study/Take the GRE

    1. Score lasts for 5 years

    2. Resources:

      1. Roomana has PDF study guide

      2. Mariam has a ton of stuff she is getting for me as well. 

    3. Unofficial GRE scores are given back immediately. 

    4. Official scores come back after 10-15 days, which should be the point at which the schools you send them to receive them. You can choose 4 grad schools to send them to for free, but I’ll pay to send them to additional schools. 

    5. Deadline: October 1

    Leave a Comment

    Your email address will not be published. Required fields are marked *

    /* add by OCEANUS */