#cs vs software engineering
Explore tagged Tumblr posts
Text
Understanding Software Engineering: A Comprehensive Guide
Introduction to Software Engineering: In today’s digital age, software plays a crucial role in nearly every aspect of our lives, from communication and entertainment to business and healthcare. But what exactly is software engineering, and why is it essential?
In this blog post, we’ll explore the fundamentals of software engineering, its principles, processes, and its significance in building…
Understanding Software Engineering: A Comprehensive Guide" explores the fundamentals, principles, and best practices of software engineering. It covers key topics like software development life cycle (SDLC), programming methodologies, design patterns, testing, and project management.
This guide is ideal for beginners and professionals looking to enhance their understanding of modern software development processes and industry standards.
#cs vs software engineering#day in the life of a software engineer#engineering#is software engineering good?#software#software developer#software development#software engineer#software engineer day in life#software engineer vlog#Software Engineering#software engineering career#software engineering degree#software engineering future#software engineering internship#software engineering major#software engineering salary#software engineering student
1 note
·
View note
Text
Physics Friday #5: The Wonderful World of Programming Paradigms
Welcome to the first actual post on the dedicated blog! This will be continuing on from what I started over on my main account @oliviax727. But don't worry, I'll still repost this post over there.
Preamble: Wait! I thought this was Physics!
Education level: Primary School (Y5/6)
Topic: Computer Languages (Comp Sci)
So you may be thinking how this is relevant to physics, well it's not. But really, other adjacent fields: computer science, chemistry, science history, mathematics etc. Are really important to physics! The skills inform and help physicists make informed decisions on how to analyse theoretical frameworks, or to how physics can help inform other sciences.
I may do a bigger picture post relating to each science or the ways in which we marry different subjects to eachother, but what is important is that some knowledge of computer science is important when learning physics, or that you're bound to learn some CS along the way.
Also I can do what I want, bitch.
Introduction: What is a Programming Language?
You may have come across the term 'programming paradigm' - especially in computer science/software engineering classes. But what is a programming paradigm really?
Computers are very powerful things, and they can do quite a lot. Computers are also really dumb. They can't do anything unless if we tell them what to do.
So until our Sky-net machine overlords take control and start time-travelling to the past, we need to come up with ways to tell them how to do things.
Pure computer speak is in electrical signals corresponding to on and off. Whereas human speak is full of sounds and text.
It is possible for either one to understand the other (humans can pump electrical signals into a device and computers can language model). But we clearly need something better.
This is where a programming language comes in. It's basically a language that both the computer and the human understands. So we need a common language to talk to them.
It's like having two people. One speaks Mandarin, the other speaks English. So instead of making one person learn the other's language, we create a common language that the two of them can speak. This common language is a synthesis of both base languages.
But once we have an idea of how to communicate with the computer, we need to consider how we're going to talk to it:
How are we going to tell it to do things?
What are we going to ask it to do?
How will we organise and structure our common language?
This is where a programming paradigm comes in - a paradigm is a set of ideas surrounding how we should communicate with a device. It's really something that can truly only be understood by showing examples of paradigms.
Imperative vs. Declarative
The main two paradigms, or really categories of paradigms, are the imperative vs. declarative paradigm.
Imperative programming languages are quite simple: code is simply a set of instructions meant to tell the computer specifically what to do. It is about process, a series of steps the computer can follow to get some result.
Declarative programming languages are a bit more vapid: code is about getting what you want. It's less about how you get there and more about what you want at the end.
As you can see imperative programs tell the computer how to do something whereas declarative programs are about what you want out.
Here's an example of how an imperative language may find a specific name in a table of company data:
GET tableOfEmployees; GET nameToFind SET i = 0; WHILE i < tableOfEmployees.length: IF tableOfEmployees[i].firstName == nameToFind THEN: RETURN tableOfEmployees[i] AND i; ELSE: i = i + 1; RETURN "employee does not exist";
And here's that same attempt but in a declarative language:
FROM tableOfEmployees SELECT * WHERE firstName == INPUT(1);
Note that these languages aren't necessarily real languages, just based on real-life ones. Also please ignore the fact I used arrays of structures and databases in exactly the same way.
We can see the difference between the two paradigms a lot more clearly now. In the imperative paradigm, every step is laid out clear as day. "Add one to this number, check if this number is equal to that one".
Under the declarative paradigm, not only is the text shorter, we also put all of the instructions about how to do a task under the rug, we only care about what we want.
With all this, we can see an emerging spectrum of computer paradigms. From languages that are more computer-like, to languages that are more English-like. This is the programming languages' level:
Lower level languages are more likely to be imperative, as the fundamental construction of the computer relies on a series of instructions to be executed in order.
The lowest level, the series of electrical signals and circuitry called microcode is purely imperative in a sense, as everything is an instruction. Nothing is abstracted and everything is reduced to it's individual components.
The highest level, is effectively English. It's nothing but "I want this", "I'd like that". All of the processes involved are abstracted in favour of just the goal. It is all declarative.
In the middle we have most programming languages, what's known as the "high level languages". They are the best balance of abstraction of reduction, based on what you need to use the language for.
It's important that we also notice that increasingly higher-level and increasingly more declarative the language gets, the more specific the purpose of the language becomes.
Microcode and machine code can be used for effectively any purpose, they are the jack-of-all trades. Whereas something like SQL is really good at databases, but I wouldn't use it for game design.
As long as a language is Turing-complete, it can do anything any computer can do, what's important is how easy it is to program the diverse range of use-cases. Assembly can do literally anything, but it's an effort to program. Python can do the same, but it's an effort to run.
Imperative Paradigms: From the Transistor to the Website
As mentioned previously, the imperative paradigm is less a stand-alone paradigm but a group of paradigms. Much like how the UK is a country, but is also a collection of countries.
There are many ways in order to design imperative languages, for example, a simple imperative language from the 80's may look a lot like assembly:
... ADD r1, 1011 JMZ F313, r1
The last statement JMZ, corresponds to a "Jump to the instruction located at A if the value located at B is equal to zero" what it's effectively saying is a "Repeat step 4" or "Go to question 5" type of thing.
Also known as goto statements, these things are incredibly practical for computers, because all it requires is moving some electrical signals around the Registers/RAM.
But what goto statement is used as in code, is really just a glorified "if x then y". Additionally, these statements get really irritating when you want to repeat or recurse over instructions multiple times.
The Structured Paradigm
Thus we introduce the structured paradigm, which simply allows for control structures. A control structure is something that, controls the flow of the programs' instructions.
Control structures come in many forms:
Conditionals (If X then do Y otherwise do Z)
Multi-selects (If X1 then do Y1, if X2 then do Y2 ...)
Post-checked loops (Do X until Y happens)
Pre-checked loops (While Y, do X)
Counted Loops (For i = A to B do X)
Mapped Loops (For each X in Y, do Z)
These control structures are extra useful, as they have the added benefit of not having to specify what line you have to jump to every time you update previous instructions. They may also include more "safe" structures like the counted or mapped loop, which only executes a set amount of time.
But we still have an issue: all our code is stuffed into one file and it's everywhere, we have no way to seperate instructions into their own little components that we might want to execute multiple times. Currently, out only solution is to either nest things in far too many statements or use goto statements.
The Procedural Paradigm
What helps is the use of a procedure. Procedures are little blocks of code that can be called as many times as needed. They can often take many other names: commands, functions, processes, branches, methods, routines, subroutines, etc.
Procedures help to organise code for both repeated use and also it makes it easier to read. We can set an operating standard of "one task per subroutine" to help compartmentalise code.
Object-Oriented Code
Most of these basic programming languages, especially the more basic ones, include the use of data structures. Blocks of information that holds multiple types of information:
STRUCT Person: Name: String Age: Integer Phone: String Gender: String IsAlive: Boolean
But these structures often feel a bit empty. After all, we may want to have a specific process associated uniquely with that person.
We want to compartmentalise certain procedures and intrinsically tie them to an associated structure, preventing their use from other areas of the code.
Like "ChangeGender" is something we might not want to apply to something that doesn't have a gender, like a table.
We may also want to have structures that are similar to 'Person' but have a few extra properties like "Adult" may have a bank account or something.
What we're thinking of doing is constructing an object, a collection of BOTH attributes (variables) AND methods (procedures) associated with the object. We can also create new objects which inherit the properties of others.
Object oriented programming has been the industry standard for decades now, and it's incredibly clear as to why - it's rather useful! But as time marches forward, we've seen the popularisation of a new paradigm worthy of rivaling this one ...
Declarative Paradigms: The World of Logic
Declarative languages certainly help abstract a lot of information, but that's not always the case, sometimes the most well known declarative languages are very similar feature-wise to imperative paradigms. It's just a slight difference in focus which is important.
Functional Programming Languages
Whereas the object oriented language treats everything, or most things, like objects. A functional language uses functions as it's fundamental building block.
Functional languages rely on the operation of, well, functions. But functions of a specific kind - pure functions. A pure function is simply something that doesn't affect other parts of the computer outside of specifically itself.
A pure function is effectively read-only in it's operation - strictly read-only. The most practical-for-common-use functional languages often allow for a mixture of pure and impure functions.
A functional language is declarative because of the nature of a function - the process of how things work are abstracted away for a simple input -> output model. And with functional purity, you don't have to worry about if what takes the input to the output also affects other things on the computer.
Functional languages have been around for quite a while, however they've been relegated to the world of academia. Languages like Haskell and Lisp are, like most declarative languages, very restrictive in their general application. However in recent years, the use of functional programming has come quite common.
I may make a more opinionated piece in the future on the merits of combining both functional and object-oriented languages, and also a seperate my opinions on a particular functional language Haskell - which I have some contentions with.
Facts and Logic
The logic paradigm is another special mention of declarative languages, they focus on setting a series of facts (i.e. true statements):
[Billy] is a [Person]
Rules (i.e. true statements with generality):
If [A] is [Person] then [A] has a [Brain]
And Queries:
Does [Billy] have a [Brain]?
Logical languages have a lot more of a specific purpose, meant for, well, deductive/abductive logical modelling.
We can also use what's known as Fuzzy logic which is even more higher-level, relying on logic that is inductive or probabilistic, i.e. conclusions don't necessarily follow from the statements.
Visual and Documentation Languages
At some point, we start getting so high level, that the very components of the language start turning into something else.
You may have used a visual language before, for example, Scratch. Scratch is a declarative language that abstracts away instructions in-favour of visual blocks that represent certain tasks a computer can carry out.
Documentation languages like HTML, Markdown, CSS, XML, YML, etc. Are languages that can barely even be considered programming languages. Instead, they are methods of editing documents and storing text-based data.
Languages that don't even compile (without any significant effort)
At some point, we reach a point where languages don't even compile necessarily.
A metalanguage, is a language that describes language. Like EBNF, which is meant to describe the syntaxing and lexical structures of lower-level languages. Metalanguages can actually compile, and are often used in code editors for grammar checking.
Pseudocode can often be described as either imperative or declarative, focused on emulating programs in words. What you saw in previous sections are pseudocode.
Diagrams fall in this category too, as they describe the operation of a computer program without actually being used to run a computer.
Eventually we reach the point where what were doing is effectively giving instructions or requesting things in English. For this, we require AI modelling for a computer to even begin to interpret what we want it to interpret.
Esoteric Paradigms
Some paradigms happen to not really fall in this range form low to high level. Because they either don't apply to digital computing or exist in the purely theoretical realm.
Languages at the boundaries of the scale can fall into these classes, as microcode isn't really a language if it's all physical. And pseudocode isn't really a language if it doesn't even compile.
There are also the real theoretical models like automata and Turing machine code, which corresponds to simplified, idealised, and hypothetical machines that operate in ways analogous to computers.
Shells and commands also exist in this weird zone. Languages like bash, zsh, or powershell which operate as a set of command instructions you feed the computer to do specific things. They exist in the region blurred between imperative and declarative at the dead centre of the scale. But often their purpose is more used as a means to control a computer's operating system than anything else.
Lastly, we have the languages which don't fit in our neat diagram because they don't use digital computers in a traditional manner. These languages often take hold of the frontiers of computation:
Parallel Computing
Analog Computing
Quantum Computing
Mechanical Computing
Conclusion
In summary, there's a lot of different ways you can talk to computers! A very diverse range of paradigms and levels that operate in their own unique ways. Of course, I only covered the main paradigms, the ones most programmers are experienced in. And I barely scratched the surface of even the most popular paradigms.
Regardless, this write-up was long as well. I really wish I could find a way to shorten these posts without removing information I want to include. I guess that just comes with time. This is the first computer science based topic. Of course, like any programmer, I have strong opinions over the benefits of certain paradigms and languages. So hopefully I didn't let opinions get in the way of explanations.
Feedback is absolutely appreciated! And please, if you like what you see, consider following either @oliviabutsmart or @oliviax727!
Next week, I'll finish off our three-part series on dark matter and dark energy with a discussion of what dark energy does, and what we think it is made of!
53 notes
·
View notes
Note
what's it like studying CS?? im pretty confused if i should choose CS as my major xx
hi there!
first, two "misconceptions" or maybe somewhat surprising things that I think are worth mentioning:
there really isn't that much "math" in the calculus/arithmetic sense*. I mostly remember doing lots of proofs. don't let not being a math wiz stop you from majoring in CS if you like CS
you can get by with surprisingly little programming - yeah you'll have programming assignments, but a degree program will teach you the theory and concepts for the most part (this is where universities will differ on the scale of theory vs. practice, but you'll always get a mix of both and it's important to learn both!)
*: there are some sub-fields where you actually do a Lot of math - machine learning and graphics programming will have you doing a lot of linear algebra, and I'm sure that there are plenty more that I don't remember at the moment. the point is that 1) if you're a bit afraid of math that's fine, you can still thrive in a CS degree but 2) if you love math or are willing to be brave there are a lot of cool things you can do!
I think the best way to get a good sense of what a major is like is to check out a sample degree plan from a university you're considering! here are some of the basic kinds of classes you'd be taking:
basic programming courses: you'll knock these out in your first year - once you know how to code and you have an in-depth understanding of the concepts, you now have a mental framework for the rest of your degree. and also once you learn one programming language, it's pretty easy to pick up another one, and you'll probably work in a handful of different languages throughout your degree.
discrete math/math for computer science courses: more courses that you'll take early on - this is mostly logic and learning to write proofs, and towards the end it just kind of becomes a bunch of semi-related math concepts that are useful in computing & problem solving. oh also I had to take a stats for CS course & a linear algebra course. oh and also calculus but that was mostly a university core requirement thing, I literally never really used it in my CS classes lol
data structures & algorithms: these are the big boys. stacks, queues, linked lists, trees, graphs, sorting algorithms, more complicated algorithms… if you're interviewing for a programming job, they will ask you data structures & algorithms questions. also this is where you learn to write smart, efficient code and solve problems. also this is where you learn which problems are proven to be unsolvable (or at least unsolvable in a reasonable amount of time) so you don't waste your time lol
courses on specific topics: operating systems, Linux/UNIX, circuits, databases, compilers, software engineering/design patterns, automata theory… some of these will be required, and then you'll get to pick some depending on what your interests are! I took cybersecurity-related courses but there really are so many different options!
In general I think CS is a really cool major that you can do a lot with. I realize this was pretty vague, so if you have any more questions feel free to send them my way! also I'm happy to talk more about specific classes/topics or if you just want an answer to "wtf is automata theory" lol
#asks#computer science#thank you for the ask!!! I love talking abt CS and this made me remember which courses I took lol#also side note I went to college at a public college in the US - things could be wildly different elsewhere idk#but these are the basics so I can't imagine other programs varying too widely??
10 notes
·
View notes
Text
BCA vs. B.Tech in Computer Science: Which One Should You Choose?
Deciding between BCA (Bachelor of Computer Applications) and B.Tech in Computer Science after 12th can be tough. Both courses open doors to the tech industry, but they have different approaches, durations, and career paths. If you're confused about which one is right for you, this blog will break it down in simple terms—no technical jargon, just clear comparisons to help you make the best choice.
What is BCA?
BCA is a 3-year undergraduate degree focused on computer applications, software development, and programming. It’s more practical and less theory-heavy compared to engineering.
Key Features of BCA:
Duration: 3 years
Eligibility: 12th pass (any stream, but Maths is helpful)
Focus: Coding, software development, databases, web technologies
Admission: Mostly based on 12th marks (no entrance exam in most colleges)
Who Should Choose BCA?
If you want a shorter, more affordable degree
If you prefer hands-on coding over heavy engineering concepts
If you didn’t take Science (PCM) in 12th but still want to enter IT
If you want to start working sooner (since it’s a 3-year course)
What is B.Tech in Computer Science?
B.Tech (CS) is a 4-year engineering degree that covers computer science in depth—including programming, algorithms, hardware, networking, and advanced topics like AI and machine learning.
Key Features of B.Tech (CS):
Duration: 4 years
Eligibility: 12th with Physics, Chemistry, and Maths + Entrance exams (JEE, state CETs)
Focus: Engineering concepts, problem-solving, research, and innovation
Admission: Highly competitive (requires entrance exam preparation)
Who Should Choose B.Tech (CS)?
If you want an engineering degree with strong technical depth
If you’re okay with a longer, more challenging course
If you aim for higher-paying jobs in top tech companies
If you plan to study abroad or pursue research (engineering degrees have global recognition)
BCA vs. B.Tech (CS): Key Differences
1. Course Duration & Depth
BCA: 3 years, more focused on applied programming and software skills.
B.Tech (CS): 4 years, covers engineering principles, advanced computing, and research.
2. Admission Process
BCA: Simple admission based on 12th marks (some colleges may have entrance tests).
B.Tech (CS): Requires clearing tough entrance exams like JEE Main, JEE Advanced, or state CETs.
3. Syllabus & Subjects
BCA: More about coding (Java, Python, web development), databases, and IT applications.
B.Tech (CS): Includes advanced maths, algorithms, data structures, AI, and computer architecture.
4. Career Opportunities
BCA Graduates: Usually start as software developers, web designers, or IT support specialists. Salaries range from ₹3-6 LPA for freshers.
B.Tech (CS) Graduates: Get roles like software engineers, data scientists, or AI specialists with starting salaries between ₹5-12 LPA (higher in top companies).
5. Higher Studies & Growth
After BCA: You can do MCA (Master of Computer Applications) or switch to an MBA. Certifications (like AWS, Java, or cybersecurity) help in career growth.
After B.Tech (CS): Options include M.Tech, MBA, MS abroad, or research. Engineering degrees are preferred for higher studies in tech fields.
Which One is Better for You?
Choose BCA If:
You want a quick entry into the IT industry (3-year course).
You prefer coding and software development over complex engineering theories.
You didn’t take Science (PCM) in 12th or don’t want to prepare for engineering entrances.
You want a more affordable degree (BCA fees are usually lower than B.Tech).
Choose B.Tech (CS) If:
You want an engineering degree with deeper technical knowledge.
You’re ready for a 4-year challenging course with maths and algorithms.
You aim for higher-paying jobs in top tech firms (Google, Microsoft, etc.).
You plan to study abroad or work globally (B.Tech has better international recognition).
Final Thoughts: No Right or Wrong Choice
Both BCA and B.Tech (CS) can lead to great careers in IT. The best choice depends on your interests, academic background, and career goals.
If you want to start working early and love coding → BCA is a great choice.
If you want an engineering degree with more opportunities → B.Tech (CS) is better.
Remember, your skills and experience matter more than just the degree. Many BCA graduates become successful developers, and many B.Tech graduates move into management. What matters is how you use your education to build your career.
0 notes
Text
How Engineering Colleges in Dehradun Prepare Students for Industry

Engineering is not just about classrooms and textbooks. It’s about solving real-world problems, building smart solutions, and working with technology that powers our lives. This is why engineering students need to be prepared for the industry from day one. In Dehradun, many engineering colleges understand this need and focus on helping students become industry-ready.
Dehradun is home to several reputed engineering colleges, including affordable private colleges and institutes like BFIT, known for offering quality education at reasonable fees. These colleges offer more than just degrees. They offer the tools and training that help students succeed in their future careers. Let’s look at how these institutions help students get ready for the real world.
1. Industry-Oriented Curriculum
Engineering colleges in Dehradun frequently update their curriculum to match the latest industry trends. Instead of only focusing on theory, colleges include practical subjects like:
Programming languages and software tools (for CS and IT students)
CAD and automation tools (for mechanical students)
GIS and smart construction practices (for civil students)
Electrical circuit simulation and renewable energy systems (for electrical students)
These course modules ensure that students learn skills that are in demand in today’s job market.
2. Practical Training and Workshops
One of the biggest ways students in Dehradun engineering colleges become industry-ready is through hands-on training. Many colleges organize:
Regular workshops on new technologies
Skill development boot camps
Industrial visits to manufacturing units, IT parks, and construction sites
Real-time project work and assignments
Such exposure builds confidence and prepares students for practical challenges.
3. Internships with Reputed Companies
Internships are key to gaining real-world experience. Colleges in Dehradun, especially BFIT and other top institutions, have partnerships with industries to provide:
Summer internships for hands-on experience
Industrial training programs as part of the curriculum
Placement-linked internship opportunities
Internships allow students to work with professionals, understand work culture, and gain technical expertise even before graduation.
4. Placement Support and Career Guidance
Engineering colleges in Dehradun have strong placement cells. These cells actively:
Connect students with recruiters
Organize campus interviews
Train students in resume building, communication, and interview skills
Invite top companies for placement drives
This guidance helps students secure good jobs in reputed firms across sectors like IT, construction, manufacturing, and research.
5. Soft Skills and Personality Development
To succeed in the industry, students also need soft skills. Colleges in Dehradun conduct:
Communication skills workshops
Personality development sessions
Group discussions and mock interviews
Leadership and teamwork activities
These sessions help students become confident, well-spoken, and professional.
6. Faculty with Industry Experience
Many engineering colleges in Dehradun hire faculty with industry experience. These professors:
Share real-world examples during teaching
Guide students on industry expectations
Help with research and innovation
Learning from such experts gives students a deeper understanding of how engineering is applied in real life.
7. Research and Innovation Projects
Colleges encourage students to participate in:
Research projects
National-level tech competitions
Innovation and entrepreneurship programs
Technical fests and model exhibitions
These platforms allow students to think creatively, build innovative solutions, and develop problem-solving abilities.
Also read: https://blavida.com/bca-vs-bsc-computer-science-for-career/
8. Collaboration with Industry Partners
Top colleges in Dehradun like BFIT often collaborate with industries to:
Develop joint programs
Offer industry-sponsored labs
Provide faculty training from industry experts
Involve students in live industrial projects
Such collaborations ensure that students stay updated with current trends and technology.
9. Affordable and Accessible Education
Engineering education in Dehradun is not only quality-driven but also affordable. Students from all backgrounds can pursue technical education without financial stress. Many affordable engineering colleges in Dehradun offer scholarships and financial aid.
Conclusion:
Engineering colleges in Dehradun, such as BFIT, are playing a vital role in shaping future-ready professionals. Through industry-focused curriculum, practical training, internships, and personality development, these colleges bridge the gap between classroom learning and real-world expectations. Whether you're aiming to purse computer science engineering, civil engineering, or mechanical engineering, studying in Dehradun prepares you for a successful and confident entry into the professional world.
Also read: https://blague-courte.com/diploma-vs-degree-in-engineering-which-one-is-right-for-you
https://www.omahanewswire.com/the-future-of-hotel-management-trends-every-student-should-know
0 notes
Text
Computer Science vs. Computer Engineering in 2025

In the age of technology, almost all students encounter a common dilemma: should they pursue Computer Science vs Computer Engineering in 2025? While both fields seem closely related, they have distinct differences in focus, skills, and career opportunities. As technology advances, the gap between these two professions continues to widen, with increasing demand for both. Let's explore the key differences, career prospects, and which path suits you best in 2025.
What is Computer Science?
Computer Science is the study of software development, algorithms, data structures, and artificial intelligence. Students learn programming, database management, and cybersecurity. Hence, they are well versed in software innovation.
What is Computer Engineering?
Computer Engineering is the discipline that includes hardware and software development and designing microprocessors, circuits, and embedded systems, as well as understanding programming and networking concepts. CE professional works on the design of computer hardware, IoT, and system integration.
Key Differences Between CS and CE
While both of them are under one common umbrella called computing, there are major differences as illustrated below:
Focus Area: Similar to the title, Computer Science is essentially more about software, programming, and AI while Computer Engineering mainly centers round embedded systems and hardware networking.
Different Skills Required: CS focuses on mastering coding, algorithms, and cybersecurity, while CE learns circuit design, microprocessors, and system architecture.
Career Opportunities: After all, a CS graduate will find himself in the world of software development or AI specialist training or as a cybersecurity expert, while an CE graduate will crash land on an IoT specialist world or hardware engineer or as embedded systems designer.
Industry Demand: Both fields have great demand, but AI, cloud computing, and cybersecurity are gaining ground in CS, while robotics, hardware encryption, and IOT are booming in CE.
Which One is Better for 2025?
Computer Science would be the best option if you had an inclination toward AI, coding, and software development.
Computer Engineering is a great option if you have interests in hardware design, system architecture, and IoT.
Both have good job opportunities, with a high demand for AI, cybersecurity, cloud computing (CS), and IoT, embedded systems, and hardware security (CE).
Conclusion
In the year 2025, both paths are rewarding career options for Computer Science and Computer Engineering. The choice will rely on your interest-whether you like coding and software development or hardware and embedded systems. TCCI-Tririd Computer Coaching Institute gives top training on both fields to help you build up successful tech career pathways!
Location: Bopal & Iskon-Ambli Ahmedabad, Gujarat
Call now on +91 9825618292
Get information from: https://tccicomputercoaching.wordpress.com/
0 notes
Text
Online BCA vs B.Sc in Computer Science: Making the Right Choice

In today’s digital age, the demand for tech-savvy professionals is growing rapidly, and two of the most popular undergraduate programs for tech enthusiasts are the Bachelor of Computer Applications (BCA) and the Bachelor of Science in Computer Science (B.Sc. CS). Both degrees offer a solid foundation in technology but differ in their approach, scope, and outcomes. This guide will help you understand the key differences between the two programs and how to choose the right one for your career goals.
Understanding the Basics: BCA vs. B.Sc in Computer Science
Bachelor of Computer Applications (BCA) A BCA degree is designed to prepare students for careers in software development, IT services, and application management. Online BCA programs provide flexibility, making it ideal for those who must balance work, family, or other commitments with their studies. The curriculum typically focuses on software development, application programming, and web development, often including business-related courses.
Bachelor of Science in Computer Science (B.Sc CS) A B.Sc in Computer Science covers more theoretical aspects of computing, including algorithms, data structures, and computer theory. The course is more research-oriented, with a focus on the mathematical foundations of computing. This program is ideal for those interested in software engineering, data science, or advanced computing roles.
Key Differences Between Online BCA and B.Sc in Computer Science
Aspect
Online BCA
B.Sc in Computer Science
Focus Area
Application Development, Software Programming
Theoretical Computing, Algorithms, Research
Flexibility
High (often designed for online study)
Moderate (usually requires lab-based learning)
Course Structure
Application-oriented, with business courses
Theory-oriented, with a focus on mathematical concepts
Career Pathways
IT, Software Development, Application Support
Data Science, Software Engineering, Research
Prerequisites
Open to students from various backgrounds
Typically requires a strong background in math
Ideal for
Practical learners interested in IT roles
Those aiming for advanced or research positions
Course Content and Structure
Online BCA Curriculum The BCA program is designed with a more practical and application-oriented approach, covering areas such as:
Programming Languages (e.g., Java, Python, C++)
Web Development (HTML, CSS, JavaScript)
Database Management (SQL, NoSQL)
Software Engineering (principles and methodologies)
Business Studies (basic understanding of business to apply tech solutions)
This course is often shorter than a B.Sc. CS typically lasts three years and is usually designed to be accessible to students with varied academic backgrounds.
B.Sc in Computer Science Curriculum In contrast, a B.Sc in Computer Science covers:
Data Structures and Algorithms
Computer Networks and Operating Systems
Advanced Mathematics (Calculus, Linear Algebra, Discrete Mathematics)
Artificial Intelligence and Machine Learning
System Programming and Compiler Design
The course is research-intensive and suitable for those interested in a deep understanding of computing principles, mathematical rigor, and analytical thinking.
Career Opportunities: Where Each Degree Can Lead
Online BCA Graduates With an online BCA, graduates are well-prepared for roles in IT and application development, such as:
Software Developer
Web Developer
Database Administrator
IT Support Specialist
Since BCA graduates are trained in industry-relevant programming languages and software applications, they can readily contribute to tech firms, startups, and IT service providers.
B.Sc in Computer Science Graduates Graduates of a B.Sc in Computer Science are often sought for roles requiring strong analytical and technical skills, such as:
Data Scientist
Software Engineer
System Analyst
Research Scientist
With a foundation in computing theory and data structures, B.Sc. CS graduates are well-equipped for positions in AI, machine learning, cybersecurity, and software development.
Choosing the Right Path for You
When choosing between an online BCA and a B.Sc in Computer Science, consider your career goals, preferred learning style, and interest in theory vs. application.
Your Career Goals
If your goal is to work in IT services, application development, or software support, the BCA may be the better fit.
If you’re aiming for roles in data science, research, or advanced technical fields, a B.Sc in Computer Science could be more suitable.
Learning Style
BCA is typically more hands-on and suited for learners who prefer practical application.
B.Sc CS involves rigorous theoretical work and is ideal for those who enjoy problem-solving and analytical thinking.
Schedule and Flexibility
If you need flexibility, an online BCA program can allow you to balance other responsibilities.
B.Sc CS programs, though increasingly available online, might still require in-person lab work for a full experience.
Final Thoughts
Both degrees offer excellent career prospects in the ever-evolving field of technology. An online BCA is a flexible, practical choice for students eager to enter the workforce quickly in IT-related roles, while a B.Sc in Computer Science provides a more research-intensive foundation suitable for careers in advanced computing and data science.
Ultimately, your decision should reflect your career goals, interests, and learning preferences. Whether you choose an online BCA or a B.Sc in Computer Science, both paths offer substantial opportunities in the digital era.
0 notes
Text
Essential Tools and Frameworks Every Computer Science Engineer Should Know
The right tools can empower engineers to work more efficiently and develop innovative solutions. Just as a skilled artist has a preferred set of brushes and colors, a computer science engineer has essential tools that help in coding, data analysis, AI development, and more.
At St. Mary’s Group of Institutions, Hyderabad, we prepare our students with practical knowledge in computer science engineering, CSE-AIML, and diploma programs in computer engineering and embedded systems. Here are some of the top tools and frameworks that every budding computer science engineer should be familiar with.
Git and GitHub
One of the first tools every CS engineer needs is Git, a version control system that tracks changes to code over time. Git helps developers work collaboratively, manage large projects, and maintain a history of changes. GitHub takes this to the next level by offering an online platform for storing and sharing code repositories. It’s especially useful for team projects, where multiple contributors may be working on the same codebase.
Why It’s Important:
Allows collaboration across teams
Keeps track of code changes
Enables seamless rollback to previous versions
Visual Studio Code (VS Code)
A powerful yet lightweight code editor, VS Code supports numerous programming languages and is highly customizable with plugins for different coding needs. Whether it’s debugging, syntax highlighting, or version control integration, VS Code provides a well-rounded environment that streamlines coding tasks.
Why It’s Important:
Supports multiple languages (Java, Python, C++)
Easy to customize with extensions
Strong integration with Git for version control
Docker
Docker has revolutionized software development by allowing applications to run in isolated environments known as containers. It’s essential for engineers working on large-scale projects because it ensures code works consistently across different machines, making it a favorite for deployment.
Why It’s Important:
Promotes consistent development environments
Simplifies application deployment
Essential for modern DevOps practices
4. TensorFlow and PyTorch – Machine Learning Frameworks
For students interested in AI and machine learning, TensorFlow and PyTorch are must-have frameworks. TensorFlow, developed by Google, and PyTorch, developed by Facebook, provide a comprehensive suite of tools for building, training, and deploying machine learning models.
Why They’re Important:
Simplify complex ML and AI model development
Provide pre-built models for quick deployment
Widely used in AI research and industry projects
5. Jupyter Notebook – Data Science Tool
For anyone working with data, Jupyter Notebook is an invaluable tool that supports data analysis, visualization, and exploration within a single environment. With Jupyter, students can write and execute Python code in blocks, making it ideal for prototyping and exploring data.
Why It’s Important:
Great for visualizing data in real time
Simplifies data analysis workflows
Supports inline visualization with libraries like Matplotlib and Seaborn
Kubernetes
As software systems become more complex, Kubernetes offers a solution for managing clusters of containers, automating deployment, and scaling applications. It’s a powerful tool that helps engineers manage containerized applications across multiple servers.
Why It’s Important:
Essential for managing large-scale, containerized applications
Automates deployment, scaling, and maintenance
Vital in cloud-native development environments
SQL and NoSQL Databases – Data Management
Database management is a core aspect of computer science, and knowledge of both SQL (Structured Query Language) and NoSQL (Non-relational) databases is essential. MySQL and PostgreSQL are popular SQL databases, while MongoDB and Cassandra are prominent NoSQL databases.
Why They’re Important:
Allow efficient data storage, retrieval, and management
Enable flexible data structuring with NoSQL
Important for back-end development and data-driven applications
Linux
While not a specific tool, knowledge of Linux and its command-line interface is crucial for any CS engineer. Linux is widely used in servers and development environments due to its stability, security, and customization options. Being familiar with Linux commands can improve productivity and help with server management.
Why It’s Important:
Provides a stable, secure platform for development
Widely used in enterprise and cloud environments
Essential for understanding system-level operations
Ansible – Configuration Management
Ansible is an open-source tool for configuration management, automation, and orchestration. It allows engineers to manage IT infrastructure, set up software environments, and handle deployment, all from one platform. It’s particularly useful for system administrators and DevOps engineers.
Why It’s Important:
Simplifies repetitive tasks like setting up servers
Increases productivity in managing infrastructure
Widely used for automating configurations in cloud computing
MATLAB – For Mathematical Computing
MATLAB is a high-level language and environment for numerical computation, visualization, and programming. It’s especially popular in fields that require complex mathematical computations, like embedded systems and engineering.
Why It’s Important:
Supports extensive mathematical functions and plotting
Useful for simulation and prototyping
Essential in fields that require intensive numerical analysis
Apache Spark – Big Data Processing
Apache Spark is a powerful tool for handling and processing large datasets, especially in real-time. It’s highly efficient and is used for tasks like data cleaning, machine learning, and stream processing. For students interested in big data, learning Spark can open doors to data engineering and data science careers.
Why It’s Important:
Enables real-time data processing
Handles large volumes of data with speed and efficiency
Important for big data and data analytics projects
Postman – API Testing Tool
APIs (Application Programming Interfaces) are critical for building modern applications. Postman is a tool that allows engineers to design, test, and document APIs. It’s essential for back-end and full-stack developers to ensure that their APIs function correctly before deploying them.
Why It’s Important:
Simplifies API testing and development
Supports automated testing with scripting
Enhances collaboration with team features
Preparing Students with Industry-Relevant Skills
At St. Mary’s Group of Institutions, Hyderabad, we understand the importance of practical experience in learning. By introducing students to these tools and frameworks, we prepare them for careers in software development, data science, AI, and more.
Through hands-on labs, projects, and collaborative exercises, our curriculum ensures students are ready to tackle real-world challenges with the confidence and skills that top companies seek in computer science professionals.
Conclusion: Choosing the Right Tools for Your Path
Each of these tools plays a significant role in various areas of computer science engineering. Whether you’re passionate about data science, AI, software development, or system administration, mastering these tools can give you a strong foundation and a competitive edge.
For students at St Mary's Group of Institutions, Best Engineering College in Hyderabad, these tools aren’t just names on a syllabus—they’re powerful resources that open doors to innovation, allowing them to become the engineers who shape tomorrow’s technology
1 note
·
View note
Text
Computer Science and Computer Engineering - Right Choice for you

What Is Computer Science?
Computer science is the study of technology and how it can help solve problems As a computer science student, you’ll learn about hardware, software, and computer system performance.
Courses in computer science :-
Programming
Game design
Web design
Robotics
Data analysis
Algorithmics
What Is Computer Engineering?
They will design and build hardware for computer systems and often work with software.
A computer engineer’s job duties include:
Designing computer hardware
Testing and analyzing computer systems
Ensuring hardware and software work together
Computer engineers integrate hardware and software and work with memory chips and output devices also as a computer engineer, you might work with artificial intelligence or speech processing.
Skill Sets: Similarities And Differences
While the basic concept of working with computers and computing-based technology is standard across both computer science (CS) and computer engineering (CE) there are some critical differences in each field's academic and practical focus.
Both CS and CE are tech-intensive fields that focus on the study of computers and computer information systems Also either a computer scientist or a computer engineer, you will need to understand both the inner workings of a computer's hardware system and the complexities of computer software and you will also need to build your skills in programming, including learning how to "speak" a variety of computing-based languages.
When it comes to differences, the most apparent contrast between computer science and computer engineering is found in how you put your computing knowledge to work each day and CS is more concerned with theory.
Many university computer science departments originated as sub disciplines within mathematics departments also computer scientists tend to focus more on analysis and theory surrounding computers and programming.
Essential skills for computer scientists include:
Software development
Information system design
Fluency or knowledge in languages such as Java, JavaScript, and SQL
Theoretical mathematical background in linear algebra and statistics
Technical writing skills for publishing findings
Critical skills for computer engineers include:
Software engineering (coding, testing, program design)
Knowledge & skill with computer hardware
Fluency or knowledge in languages such as Assembly, C++, and Perl
Strong general mathematical background
Problem-solving & communication skills for working in teams
Computer Science vs. Computer Engineering: The Main Differences
Computer science students learn how to build computer systems and how to solve problems on computers and other electronic technologies using data storage and processing also Computer science students learn a variety of computer languages and computer environments, which helps them master a range of skills from creating computer graphics, through developing and analyzing numerical & mathematical algorithms and complex networks, operating systems, and building.
Computer engineering students, on the other hand, are somewhere between computer science and electrical engineering you’ll probably find system operations and computer architecture courses in a computer engineering degree and computer engineering programs.
They put a big emphasis on the physics and manufacturing of physical devices and integrated circuits also Computer engineering students learn to master robotics, pattern recognition, speech processing, and so much more.
Job in Computer Science And Computer Engineering
The US Bureau of Labor Statistics (BLS) reports that information technology fields, including CS and CE, are projected to grow by 13 percent between 2020 and 2030 also This is faster than average In real terms also this means that the US alone expects to see job growth of more than 667,000 new jobs in computer science and computer engineering in the coming years.
Examples of computer science jobs
Database administrator
Data scientist
Systems analyst
Software developer
Software quality assurance manager
Web developer
Computer programmer
Computer support specialist
AI research scientist
Examples of computer engineering jobs
Computer architect
Circuit designer
Communications engineer
Network systems engineer
Network architect
Systems programmer
Systems architect
Systems Engineer
Hardware engineer
Game developer
Forensic computer analyst
Computer research scientist
Salaries for computer science and computer engineering jobs
Computer network architects: $120,520
Computer systems analysts: $99,270
Database administrators and architects: $98,860
Network and computer systems administrators: $80,600
Software developers, quality assurance analysts, and testers: $110,140
Web developers: $77,200
Career in Computer Science or Engineering
Whether you already work in computer science or computer engineering or want to enter these fields also there are things you can do to advance your career Since computer systems and programs are ever-changing, building new skills, completing regular training, and earning various certifications in computer-based fields can help you stand out as a job candidate also you can also use these new skills and knowledge to negotiate a higher salary.
Build new skills
While computer science and computer engineering professionals use their knowledge and skills differently and one critical similarity is the need to renew and refresh that knowledge constantly and building new skills as a computer scientist or computer engineer can mean anything from taking a course in a new programming language to updating your knowledge on specific fields as well as you can also build your skills in various settings by completing in-house training at work or taking an online course such as Python Data Structures.
Pursue certifications or degrees
If you are looking for a more comprehensive way to increase your opportunities as a computer scientist or computer engineer, consider pursuing certification or a degree in either field and Build some in-depth knowledge that can lead to a higher-paying job in the future with a computer-related certification, bachelor's, or master's degree.
Conclusion
The best engineering College in Jaipur Arya College of Engineering & I.T. has both courses Computer engineering and computer science with good faculty and infrastructure. But they are not the same, In the simplest terms: computer engineers work with firmware and hardware, while computer scientists innovate complex software systems, machine learning-based algorithms, and more Computer science is the study of all modern aspects of computers, mainly focused on software, also as a computer scientist you’ll design large-scale software systems, and machine-learning algorithms, and use advanced programming skills to problem-solve and innovate also some fields of computer science and computer engineering may differ, but they work together every day also Professionals with a master’s in computer science may be able to go on to work in computer engineering fields with the right training and experience and vice versa.
Source: Click Here
#best btech college in jaipur#best engineering college in jaipur#top engineering college in jaipur#best private engineering college in jaipur#best btech college in rajasthan
0 notes
Text
Computer Science vs. Computer Engineering: What’s Right for You? - Arya College
What Is Computer Science?
Computer science is the study of technology and how it can help solve problems As a computer science student, you’ll learn about hardware, software, and computer system performance.
Courses in computer science :-
Programming
Game design
Web design
Robotics
Data analysis
Algorithmics
What Is Computer Engineering?
They will design and build hardware for computer systems and often work with software. A computer engineer’s job duties include:
Designing computer hardware
Testing and analyzing computer systems
Ensuring hardware and software work together
Computer engineers integrate hardware and software and work with memory chips and output devices Also as a computer engineer, you might work with artificial intelligence or speech processing.
Also read: Computer Engineering Vs. Electrical Engineering
Skill Sets: Similarities And Differences
While the basic concept of working with computers and computing-based technology is standard across both computer science (CS) and computer engineering (CE) there are some critical differences in each field's academic and practical focus.
Both CS and CE are tech-intensive fields that focus on the study of computers and computer information systems Also either a computer scientist or a computer engineer, you will need to understand both the inner workings of a computer's hardware system and the complexities of computer software and you will also need to build your skills in programming, including learning how to "speak" a variety of computing-based languages.
When it comes to differences, the most apparent contrast between computer science and computer engineering is found in how you put your computing knowledge to work each day and CS is more concerned with theory.
Many university computer science departments originated as sub disciplines within mathematics departments also computer scientists tend to focus more on analysis and theory surrounding computers and programming.
Essential skills for computer scientists include:
Software development
Information system design
Fluency or knowledge in languages such as Java, JavaScript, and SQL
Theoretical mathematical background in linear algebra and statistics
Technical writing skills for publishing findings
Critical skills for computer engineers include:
Software engineering (coding, testing, program design)
Knowledge & skill with computer hardware
Fluency or knowledge in languages such as Assembly, C++, and Perl
Strong general mathematical background
Problem-solving & communication skills for working in teams
Computer Science Vs. Computer Engineering: The Main Differences
Computer science students learn how to build computer systems and how to solve problems on computers and other electronic technologies using data storage and processing also Computer science students learn a variety of computer languages and computer environments, which helps them master a range of skills from creating computer graphics, through developing and analyzing numerical & mathematical algorithms and complex networks, operating systems, and building.
Computer engineering students, on the other hand, are somewhere between computer science and electrical engineering you’ll probably find system operations and computer architecture courses in a computer engineering degree and computer engineering programs.
They put a big emphasis on the physics and manufacturing of physical devices and integrated circuits also Computer engineering students learn to master robotics, pattern recognition, speech processing, and so much more.
0 notes
Text
Based on the responses to my post yesterday wanting to know more, here's my guide to
🧑💻Code in Hermitcraft (and other SMP) Fanfic🧑💻
Note: This is just the interpretation of one Jr Software Engineer. If other developers have a different interpretation, I'd love to hear it in the comments or reblogs!
It's super common in Hermitcraft (and I'm assuming other SMP) fanfiction for the plot to revolve around errors in the game itself and how they affect players. The problem is, as a software engineer, this almost always immediately pulls me out of the story as the ways the game errors are described frequently don't make sense.
This is not a condemnation of writers who use game bugs as parts of their stories, as nobody expects all SMP fanfic writers to have a CS degree. Some even do it well and I adore those stories when I find them! But here are some high-level suggestions to have your glitchy plot points make a little more sense. Usually, it's just a slight change in wording that's required.
Code vs Data
"His code is glitched! He's evil now!"
"They carefully pulled at the strands of her player code, trying to find the bug that was causing her pain."
"Wow, your code is so ancient! You're from Alpha, right?"
These sorts of phrases are probably the most common ones I see that yank me right out if a story. Why? Because they're confusing data and code!
So, what is the difference?
Think of code in this scenario like the laws of physics. It's the rules that guide what can and can't happen in the world. It's what says "if you walk, you move forwards", "if you eat, you'll be less hungry", "if you use a shovel on a dirt block, it will end up in your inventory".
Data is the actual "stuff" in the world that the code changes via its rules. Data is the specific blocks in that building, that item hovering above the ground, the mobs staring at you from under the trees, the player character, the player's health, the player's inventory, the player's skin, and, in the fanfic context, the player's personality and memories.
In other words, if it's an action that can happen, it's probably code. If it's a specific thing, it and everything that makes that particular thing unique is data.
Of course, there can be bugs or glitches in the code which means that data does something it shouldn't, such as "if you put some TNT, some dead coral, and a minecart in this very specific configuration, you can duplicate the TNT." In this case, the act of duplication (ie the rules that let duplication occur) is a glitch in the code (the rules allow something they shouldn't), but the duplicated TNT itself isn't code; it's data. Data that shouldn't exist but does anyway because of that glitch in the code.
So, how could you rework the sample phrases above to make more sense?
"He got too close to a glitch, and his personality data got corrupted. He's evil now!"
"They carefully prodded at her player data, trying to find the broken property that was causing her pain."
"Wow, your data structures are so ancient! You're from Alpha, right? I can't believe you've survived so many updates without compatibility issues!"
Code vs Logs
"Xisuma looked through the code to find the source of the glitch."
This one's a little less clear cut, as there are circumstances where players could look at a version of the code. Some of the Minecraft code is Open Source (ie free to look at), and the rest can be decompiled from the Minecraft .jar (ie turned from machine-readable ones-and-zeroes back into words and stuff, although much less human-readable than what the original code would have been). The super-technical players such as the SciCrafters and I think Doc too will look at the code, which is how they make their super efficient farms and find and exploit glitches to, say, put 8 spawners in one chunk.
But generally, the code is not the first place you go when encountering a glitch. I mean, if it were that obvious from the code alone, it probably would have been caught before being shipped!
When something goes wrong, the first place to look is the logs. The logs of what the players have been doing, the logs of previous commands that have been run, the update changelogs for the game, the version history of the (admin-editable) config files, any warnings or error logs from the server itself. For example, if you have a malicious user such as, say, a Helsmit in your story, the logs would show when they entered the world and where, unless they also did something hacky to cover their tracks.
Personally, I also wouldn't say you'd have to stick to exactly what a server would realistically log if it makes your story more interesting. It's easy enough to hand wave that an admin has a mod in place that surfaces more information if it'd make the story better!
In a multi-server setting, this is also the point where the admin of your world could also reach out to the admins of other worlds and discuss if they've seen the issue before and how they solved it. The in-universe equivalent of looking it up on Stack Overflow or Reddit if you will!
Once the admin has looked at the logs and maybe chatted to others, if they still can't fix the issue via commands or config file changes, then it might make sense for them to try looking into the code if they can. Note that not all server admins are necessarily confident at programming as it's not a core part of their job.
But at the very least, at this point the admin should have a better idea of what part of the code could be bugged. This will make it easier to either a) make a patch for the bug or, more likely, b) understand what circumstances trigger the glitch and avoid those circumstances.
TL;DR: The code is not the first place admins will go when glitches cause issues; the logs are!
And as before, example sentence:
"Xisuma trawled through the logs, trying to find any indication of the source of the problem."
To Conclude
Code is the rules that govern what stuff can do and how stuff interacts. The stuff itself is data. When something goes wrong, that typically results in the data being in a state it shouldn't be in, wether that be because that thing's velocity is much higher than it should be after taking advantage of the ravager flight glitch, or because a player and a mob's data structures got combined on accident to leave them a player-mob hybrid.
Of course, this broken data is likely caused by a bug/glitch in the code. It could also be caused by somebody malicious who's purposefully trying to break things by messing with the memory in another way. It could also be because a cosmic ray hit a piece of RAM and flipped a single bit (this is an actual thing that happens believe it or not).
Either way, when something goes wrong, the admin's first point of exploration is the logs, not the code. The logs will give the admin a better idea of what the cause of the issue is, and talking with other admins could give them a solution without ever touching the codebase. But worst-case scenario, it is indeed possible for an admin to go spelunking through the codebase to find the cause of an issue and create a patch for it.
This just covers the most common code-related plot points that I personally see in Hermitcraft/other SMP fanfiction. If you have any further questions about writing code-related plot points, feel free to ask! And also, just to reiterate, this is all just my interpretation. Others may interpret differently, and if you do, I'd love to hear what your alternative interpretations are!
PS: I was also planning a section on hacking here, but this post is already getting long and that's complicated, and also I'm bad at hacking. But let me know if you have any questions related to that that you'd like to see in a follow-up post!
#and yes I did write this when I was supposed to be coding for work#hermitcraft#mcyt#shamelessly maintagging in case others find it useful#res writes#res rambles
1K notes
·
View notes
Text
I have a whole rant about this but...
Tldr not on your own, and not without a tiny bit of training- but I'm talking like a day course and a collaborator.
The introduction to the longer answer is that there are, extremely loosely, two kinds of bioinformatics: BI from the CS perspective, and BI from the bio perspective. The former usually involves coding advanced tools/packages for use in Bioinformatics, the latter involves using those tools with just enough coding knowledge of your own to chain them up effectively and appropriately. The former requires rigorous understanding of math and algorithms, the latter requires rigorous understanding of biological experimental design and background on the exact biology you're studying.
I'm far more of the latter, but I've known many who were successful at the former- many of whom were former software engineers, computer engineers, and computer scientists who were willing to take a slight pay cut to work on something they viewed as more fulfilling.
I'd also further divide the biology perspective into two further categories, of user vs poweruser- eg, someone who knows how to slap something into BLAST occasionally or use a gui-based application, and does so regularly, vs someone who chains up the tools and packages by adding to existing code or importing packages into their scripts.
My work typically falls into that category of "biologist poweruser"- I mostly use BASH, R, and Python to implement algorithms or statistics that someone else has done the main dirty CS work, and I need to essentially do computational experimental design and implementation to decide and use whats best for my experimental questions.
When I say I have some background in bioinformatics, people are often like "aha! Finally a biologist who can do math"
And I'm like no
you don't understand
I'm a biologist that was so bad at math that I have to get a computer to do it for me
That's literally how my entire experience with bioinformatics started and I'm literally not joking
284 notes
·
View notes
Text
Laying the foundations of my career: how + why I chose community college to begin my transition into tech
A quick search will yield thousands of online resources to launch a career in tech, including bootcamps, courses, degrees, certificates, informative articles, and even YouTube tutorials. Yet the #1 dilemma people continue to struggle with when making the transition is not knowing where or how to get started. With all of the online and in-person options available, why does tech still appear inaccessible? Recognizing this gap, I decided to document my journey hoping to share helpful and relatable experiences to help others shape their own. Below is part two of my journey (between 2020-2021), written through the lens of an adult without a degree. This story outlines the personal struggles I faced with not knowing where to begin, and how I found solutions to them for laying the foundations of my career.
It was nearly a decade later after dropping out of college when I decided to pursue a career in tech. No matter how much searching I did online, getting a job in the industry seemed far beyond my reach. Despite endless pages of resources, there were very few (if any) success stories or relatable experiences from other women also coming from minimum wage jobs and night-life gigs. At the time, I was single, estranged from family, and barely knew anyone in LA, so moving forward with a career in tech meant carving my own path without a support system to guide me.
I spent over a month scouring the internet for helpful articles, investigating bootcamps, browsing local college programs, and reading a lot of Reddit posts. My searches into different fields and how to land a job looked like this: “Can I land a ___ job without a college education?”, “Do I need a degree to become a ___?”, “What programming languages do I need to learn?”, “Should I finish my degree?”, “Should I get a degree in CS/CIS for ___?”, “This bootcamp vs that bootcamp”, “This field in tech vs that field”, “Bootcamps vs college vs certificates vs studying on my own to land a job in ___”. After deciding on software engineering as my career path, I began racking up bookmarks, taking notes, and narrowing down my options by comparing them in a word document organized into two main categories: free vs paid. I (eventually) tried them all:
1. Bootcamps. I read reviews and researched job outcomes, full-time vs part-time curriculums, syllabi, mentor services, career coaching, and payment plans. They were selling me my dream: that their program would land me a job within a few months after graduation and I could kiss poverty goodbye forever. However, all of them were expensive, and their deferred tuition plans meant being locked into a contract that would take a percentage of my income after being hired. Nonetheless, this was originally my first course of action. I was desperate to find a way out of my current circumstances and rushed through the interview and admissions process. I even tested into the program and went as far as to fill out the deferred tuition form. However, when it was time to submit the application, I backed out. Even after all the research I poured into choosing a bootcamp, I was still uncertain, and debt scared me. I kept asking myself, “Did I really explore all of my options?”, and concluded that it was best to start with the free resources first, which led me to option two:
2. Self-study. I put the idea of joining the bootcamp on hold to give studying on my own a chance. I watched YouTube tutorials and dabbled in free + cheap online courses to explore different programming languages. I realized quickly into this decision that I would have put myself in a detrimental place (financially and mentally) had I joined the bootcamp without prior knowledge about any of the programing languages. I also discovered that my learning pace was too slow for a bootcamp at the time due to being out of school for so long. There was now an extra layer on top of trying to learn new material: I needed to re-learn how to learn. This was probably the most upsetting realization of them all, because it meant pushing back my transition into a new career even more. Eventually, learning on my own proved to be unsuccessful and my dream of getting out of a poverty hole felt impossible. By this point, I felt so low I was questioning whether or not software engineering was the right career path for me, which led me to my final option:
3. College (community college). After deciding that a bachelor’s degree was too expensive and would take too long to accomplish, I registered to complete a full-stack certificate. Although lockdown made orientation and the financial aid process a nightmare, my determination resulted in being able to attend with a pell grant. I was surrounded by people of all ages and various backgrounds that shared the same goal as me: to give myself more than what I had. Taking classes in Python, SQL, HTML, CSS, JavaScript, and React connected me with a large network of people in CS/CIS Discord servers where I had access to other teachers, tutors, graduates, internships, and job-postings. Beginning my transition into tech with community college allowed me to get acclimated with learning again at the pace I needed, which ultimately solidified the idea that choosing this career path was indeed right for me. I was also not alone anymore, but part of a community where I could turn to the support of others.
In hindsight, the setbacks I faced in the beginning boiled down to three factors: 1) not having any prior exposure to the industry, 2) not knowing how to educate myself after being out of school for so long, and 3) not knowing what questions to ask to get started. At the time, my income, employment, education level, and overall poor quality of life reflected the demographic of my tumultuous background and familial relationships. I was living in a constant state of scarcity mentality, trying to survive unsafe living conditions, and battling toxic generational patterns. It was only because I spent my twenties addressing those issues that I was able to start believing I was capable of more.
Even though it was a decade-long, painful process, my life choices eventually led me to an inclusive community of people with diverse backgrounds also pursuing tech-related fields. Slowly, I began shedding harmful beliefs of who I was and where I came from, building a support network, and taking the first steps of my educational journey into tech.
#programming#webdevelopment#css#html#javascript#psychology#student#code#coding#women in tech#advice#life advice#self improvement#self love#learning#adult learning#school#bootcamp#techbootcamp#ui#ux#ui design#ux design#ux research
9 notes
·
View notes
Text
C vs C# Detailed comparison by Experts you should know
Here in this blog, Codeavail experts will explain to you on C vs C# in detail with example.
Nowadays, where you have a lot of programming languages to look over, it’s hard to make knowledge of which language to utilize when you set up your tasks. But C and C# are two of the top programming languages. Both languages are easy to learn and based upon the object-oriented programming topics. Before we examine the distinctions, let us review a few highlights of each and how they are adding to the programming display.
Know about C vs C#
C Language:
This language is a center programming language that was created at Bell investigate lab in 1972 by Dennis Ritchie. C language consolidates the properties of low level and raised level language. Along these lines, its idea about a center programming Language.
C might be a high programming language that licenses you to create PC code and moveable applications. There are 32 all-out keywords utilized in the C language. It’s an ideal language for creating a PC code system.
The important features of C language are:
Low-level way to memory
A simple set of keywords
Clean style
C# Language:
C# is a high level, an object-oriented programming language that besides worked as an expansion of C. It was created by a group at Microsoft lead by Anders Hejlsberg in 2002. It’s situated in the .NET structure, yet its spine is still obviously the C language.
C# orders into byte-code, as opposed to machine code. That implies it executes on a virtual PC that makes an interpretation of it into machine code on the fly. It includes trash assortment, uninitialized variable checking, bound checking, and type checking capacities to the base C code.
It commonly observes use inside or attempt applications, as opposed to business programming. It’s found in customer and server improvement in the .NET structure.
Types of software construction designs:
Rapid application development projects
Large or small teams, internet applications
Projects implemented by individuals
Projects with strict dependability requirements.
Essential Differences Between C and C#
Both C vs C# are well-known decisions in the business; let us examine a portion of the significant Differences Between C and C#:
Since C# is based, Syntaxes will, in general, be in addition, comparable. Sections utilized for portion coding structures, and C-style object-arranged code that includes conditions and libraries are fundamentally the same as.
Moving from C# to C++ is likely progressively difficult because it’s a significantly more low-level language. C# handles a great part of the overhead that must be estimated in a C++ program. This is one significant explanation C++ is viewed as an increasingly difficult language as well.
C is low level and lets you get truly near the machine, yet it’s a procedural language. What’s significant in our setting is that. It implies it has no understanding of articles and legacy.
More about C vs C#
C# is altogether different from C/C++. I accept some portion of its name originated from C++ ++, at that point taking the second ‘++’ and putting it under the first to make the ‘#’ image. Demonstrating they believe they’re the third in the arrangement. That being stated, if you took a stab at making a C++ document into a CS record, you’re going to make some terrible memories. It’s not going to work by any stretch of the imagination.
We suppose you could state C# and C++ share a lot of practice speaking Java and JavaScript. Which share as much for all intents and purposes as Ham and Hamster. JavaScript was named in that capacity, so individuals would think it had something to do with the first language Java.
Which was, at that point, well known, so essentially closely following their achievement in some misleading content move. The equivalent may be valid with C#. Individuals accept it has to do with C++, so they give it a shot. I wouldn’t get it past Microsoft, because, before C#, they made J++, which was fundamentally only Java with little contrast. After a claim, they needed to evacuate it and made C#.
C# is passing on my preferred programming language. While it may not be as quick, it has consistent heaps of sumptuous highlights that make life simpler, similar to articulation body individuals, get and set properties, Linq, and so forth.
They’re continually including new things and causing it so you can do what used to take 10 lines of code into 1 line. This is critical to me since I feel that what sets aside a program a long effort to compose shouldn’t be the reality you need to type a ton, that shouldn’t be the variable. What decides the period ought to be how savvy you are and how complex what you’re attempting to do is.
C# keeps you from doing certain things that C/C++ permits you to. However, a portion of these things were things that you could never need to do in any case. They were presumably some error that was going to prompt some extremely odd conduct. And you do not know why such as doling out in a contingent field or having ‘5;’ as an articulation. That line of code isn’t “doing” anything, so C# won’t let that run since it was most likely an error.
Compiled languages:
Both C vs C# have arranged languages. This suggests before an application is moved on a PC or the server, the code must be changed over to parallels and afterward executed. An executable EXE document is a genuine case of an ordered record that could be written in C++ or C#.
Object-oriented setup:
Even the fact that the scientific structure varies to an impressive degree, the significant ideas like classes, legacy, and polymorphism continue as before.
C vs C# Comparison Table
C program suits Hardware applications, framework programming, chip structuring, and inserted gadgets.
Significant information types included: int, buoy, twofold, and burn.
All out number of keyword utilized in C programming: 32
There is just a single fundamental sort accessible in C
An organized programming language.
The execution stream includes top-down characteristics.
C#
Significantly reasonable for application and web application advancement.
Significant information types included: int, buoy, twofold, and burn, Boolean, which is utilized to deal with consistent activities.
The absolute number of keyword utilized in C# programming: 87
C# includes 2 vital varieties in it.
An item arranged programming language.
C# follows a base up program structure for performance.
Head to head comparison between C and C#1.Size of binaries
C: C is a compiled language, which will generate our codes in the binary files.
C#: C# is also a compiled language, Which converts user code into binary files.
2. Performance
C: C is a widely-used programming language. C code faster than other programming languages.
C#: C# code is slower than a C programming language.
3. Garbage collection
C: C programming, many programmers need to handle memory allocation and deallocation.
C#: In C# programming, the programmer does not bother about memory management.
4. Types of Projects
C: We use C language in the projects.
C#: C# programming mostly used for web and desktop-based applications.
5. Compiler warning
C: In the programming language, a programmer can write any code.
C#: In the C# programming language, a programmer can write code for what they want to develop.
Which Language do you want to use for your project?
C# engineers and C++ designers have diverse ranges of abilities, so you can post an extension and figure out which stage is generally effective for your undertaking after talking about the two sides.
A dependable general guideline is that web and work area improvement is finished utilizing elevated level language such as C#. C# is a piece of the .NET language, which is explicitly expected for web improvement.
However, it additionally works easily with Windows-based projects. Even though Microsoft is attempting to port its language to the Linux framework, it is ideal to stay with the C# and Windows conditions.
C++ is all the more balanced as far as stages and target applications, yet the designer pool is progressively constrained because it’s not as mainstream for web and versatile applications.
If your undertaking centers around amazingly low-level handling, you may require a C++ designer. You can likewise utilize C++ to make effective, quick applications for server-side programming.
At last, you can use C++ considerably more than C#, yet it’s not generally the most practical approach to deal with your venture.
Also, the ideal approach to choose the correct language is to post your extend and ask designers their assessments. Designers and supporters for the two dialects will test out their thoughts and give you more data on your particular venture to assist you with deciding.
Conclusion:
In this blog, We explain the difference between C vs C#. As we discussed several features of the C and C# programming languages.
In addition, C# is a straightforward, broadly useful language that has been institutionalized, yet we, for the most part, observe it with .NET system on Windows, while C++ is generally utilized. C# was, for the most part, evolved as a Microsoft elective for the strong Java.
Finally, While C++ needs to follow appropriate engineering and the code has certain officials. C# code is created as parts so it can fill in as a lot of remains solitary modules autonomous of one another. C++ accompanies a lot of highlights that are amazingly appropriate for complex programming systems.
While C# has restricted and straightforward highlights that are generally enough for a basic web application. If you want to get any computer science assignment help and computer science homework help related to programming assignment help. You can get the best C Programming Assignment Help at an affordable price within a given deadline.
#programming#coding#blog#student#students#struggle#study#student life#studentmemes#studyblr#studentlifeproblems
1 note
·
View note
Text
@auronlu :
I hear what you are saying. There is an strong element of fear and desperation that cuts across your examples and mine.
I’m going to add a little more context to the sexism side, focusing only on women in tech for just a moment (because the story there is very obvious)
A well known disturbing trend in STEM that researchers have been following since (at least) the 90s (and probably earlier) is how the percentage of women graduating with Computer Science degrees peaked in the 80s and has since declined. Now the numbers are on par with the rocking backwardness of the 70s. >_<. (See note 1)
Yet this is completely opposite of the trend of women seeking higher education — that percentage has grown steadily over the past few generations.
And it certainly has not happened because women think computer science is too hard or because it has become more difficult. But what has happened is that a computer science degree commands a far higher salary post-graduation than it did a few decades ago. A few decades ago, a typical starting comp sci (software programmer / software engineer) salary was a standard middle class white collar job. Salaries started pushing into upper middle class in the very late 90s (look at what happens in the chart up above), and by the mid-00s, a 22 year old with a freshly minted CS degree could walk into a job in Silicon Valley that dropped over a quarter million dollars per year (salary + annual bonus + stock) into their bank account. That’s a far cry from $30k + health insurance in the early-mid 90s. AND, there has been a lot of research performed in multiple nations — multiple kinds of cultures — showing that when more women enter a field, salaries trend down (*cough* sexism) and when a field is highly competative and highly male dominated, and profit oriented, salaries are more likely to push up. Thus, it isn’t surprising that women have felt less and less welcome or have been actively PUSHED OUT THE DOOR in a field where, today, a young 20-something who is smart enough to get hired by the right company can literally expect to make a few million before their 30th b-day.
If you google today’s news for a story “Microsoft Staff are openly questioning the value of diversity” (sorry - on ipad and it is difficult for me to add multiple links -_-), you’ll see how ugly this is getting — it is really just a repeat of what has happened at Google, Uber, and other tech companies over the past couple of years but the shit people are saying on internal mailings lists that has been leaked to the media is very blatant. Certain people (men and women, yes, women, sadly) certainly held some of these thoughts 10 and 20 years ago — because I have heard the words come out of their mouths — but the escallation all the way up to the chain — up to senior management at these companies and into the media and onto twitter and blogs — is very different and far more organized as a mode of attack.
So, when you say fear of loss of pre-existing privileges, including fast-tracking into the inner circle because they are ‘the right kind of culture fit’ (male, white) and, thus, fast-tracking into a sense of career success and into financial power, I certainly agree that FEAR is an issue but .... why does it keep getting worse, especially when the comp sci pipeline has been producing less and less women since the early 80s. I mean, think about it. That pipeline hit its peek in 1983/84. Those women are pushing 60 now — late career! The men in my generation and the generation after have LESS COMPETITION from women. Women are practically invisible in the engineering side of most high-paying tech company org charts. So ... fear of women taking over isn’t really supported by the data.
Thus, what are they afraid of?! And this is where I wonder if massive economic changes between how things are now vs how things were in the 1950s early 1980s tells the other half of the story. Gen X in the western world was the first 20th/21st century generation to realize that they weren’t going to do as well as their parents and as Gen X ages, data shows that they are defintely feeling fucked, especially in the US. But, Gen X were just the test subjects, so to speak.** Millenials and the oldest Gen Zs are even more economically screwed, which is absolutely depressing to think about based on how screwed Gen X is in comparison to those before them.
(** Also, pretty much anyone of any age is in an economic nightmare in the US thanks to spiraling healthcare costs, which definitely affects the older generations who, on average did far better in their youth, especially if they were white.)
So ... is the fact that being middle class now means that you are one car accident or hospital visit away from potential poverty, and student debt/education cost has consistently risen since the late 80s/early90s, and the insane cost of health care in the US (omfg), etc. All of this. Is this what has really pushd the fear into attack mode? Because merely saying “women are flooding this field so we men have to protect our access to good salaries and push back” is entirely NOT the case in computer science and software engineering.
(1) http://www.aei.org/publication/chart-of-the-day-the-declining-female-share-of-computer-science-degrees-from-28-to-18/
2 notes
·
View notes
Text
To CS degree or not to CS degree?
I recently completed a computer science degree through Oregon State University’s online CS program. It was 60 credit hours (15 courses), took me 1.25 years total time in school, and cost about $28,000. While I was there, the question that I heard from a lot of other students (and asked myself) is whether or not the degree is worth it. I had plenty of time to think about this and since I’m standing on the other side, I believe I can contribute some useful points for others to consider when determining if the grass will be greener by earning a CS degree.
The question “Is it worth it?” is generally asked as a result of one (or both) of two concerns:
– Return on investment
– Going to school vs. doing it on one’s own
Return on Investment. Most would consider the tuition money as an opportunity cost which could be used on other things (retirement, kids, car, etc.). As an exercise, take the tuition cost, and spread it out over the lifetime (plus interest) of the number of conceivable years you plan to work. Allow a back-of-the-envelope if you will: let’s assume an age of 35 (plus or minus a couple years). By that age someone would have a good idea of their general life trajectory and also allows a nice round number to work with – 30 remaining working years until retirement. If you look at just the principal amount, you could say that it would cost you 1k per year over 30 years as the principal investment. That’s peanuts.
But what about interest? Fuggedaboutit. Even if you were earning 7% in the market (or more…if you’re Ray Dalio), excluding inflation, on the $30k principal, then you are earning a couple of grand a year in interest on that $30k investment, until interest actually starts stacking up, at which time you will see larger returns. Over 30 years that looks pretty nice ($228,367.65…in today’s dollars mind you), but you won’t feel the compound interest for some time, and even if you had $30k to invest towards retirement, why didn’t you? Because you didn’t have $30k to invest. You are likely scraping by, or you are doing the student loan dance like everyone else, and $30k paid now (or by debt) is an investment in changing or enhancing your life trajectory as much as it is a financial decision, which isn’t exactly an apples to apples comparison.
The reverse about interest is also true: tuition will have you paying that ~7% instead of collecting it. If you plan to pay down a student loan over 30 years then prepare to pay the full $228,367.65. However, with a CS degree, you are going to come out on top in terms of salary, which means you will be able to pay off $30k pretty quickly and won’t feel the interest, at all. As of 31 October, 2016, the salary range for a Software Engineer I is $56,875-$72,114. Not. Too. Bad.
In any case, the reality is that a CS degree will significantly enhance your future salary earnings. It is not difficult to realize 6 figures in a relatively short amount of time if you work hard and learn the craft. Don’t believe it? Just browse Indeed’s opportunities. Also consider that you can get into the six figure range anywhere between 1 – 10 years of experience and staying in that range for the remainder of your career. You will have the CS potential to earn > $1 million dollars more than your non-CS potential, in even a conservative scenario. This is not just for software engineers, either. CS is applicable to an increasing number of professions other than pure engineering. Keep in mind that remote work is rising, too, which gives oodles of flexibility in living arrangements, and thus cost of living.
In summary, getting a CS degree and pursuing a career in software development (or other professions that pay equally well or better) will pay for itself if you’re only concerned about the financial return on investment.
Going to school or doing it on your own. This is the one that I frequently considered. One question that is normally asked with respect to doing it on one’s own, is whether or not it can actually be done purely based on the availability of information. You can learn anything and everything there is to know about CS, online. If it’s not online, it’s in a book, which is also online. It’s on the line. Even better, universities make their curriculum public, and some schools (MIT for example) put their entire course online – instructional videos, notes, and even tests! To be sure, it is there.
Taking a close look, the issue of getting a degree or doing it on your own (DIYO) can be subdivided into smaller components.
Instructor quality. Unless you are attending a top school, don’t expect consistent experiences throughout the degree.
In my experience, one or two instructors were pretty good, the majority were mediocre, and the remaining one, perhaps two, were of course bad. It was even the case that one instructor was great for one course, but for another course, the same instructor was mediocre due how he designed the course. We were learning app development for Windows phone. The point here is…who actually has a Windows phone? So, while he was very responsive to questions and great at providing answers, the course design was lacking which made for a ‘meh’ learning experience.
Some of the instructors also needed English improvement while many of the TAs were in dire need of the same. Communicating ideas in broken in English degraded program quality.
What does this all mean at this point? If you go the degree route, know that you will run into obstacles due to human limitations that you are paying for. Conversely, learning on your own will yield results with the human limitations being your own.
As your own instructor, you need to hold yourself accountable. You need to push yourself to study, take the tests, write the programs, and know when to tell yourself to work on areas that you are weak in.
While pursuing a degree, your instructor outlines the course for you. Yet, you are still doing all of the above things on your own. An important aspect of a degree path that does not see overlap with DIYO is grading. With computer science, this might be difficult. I’m sure there are plenty of resources out there that will automatically grade programming problems (DIYO programs) and give you quite a bit of feedback, but those might be difficult to fit into your homemade training curriculum.
For example, in a degree plan, you will write a program that will exercise the skills you picked up from that week’s reading and lectures. That program will be specifically designed to test whatever it is the instructor taught you. Finding a programming problem (and the ability to automatically grade it) to match your self-studies might be somewhat challenging. On the other hand, if you are using textbooks to learn (which in most cases is a fantastic way to do it, by the way), then you will find programs at the end of each section, chapter, what-have-you, which will match the general study path of a CS degree. Grading might be the only tricky part in that instance.
Writing CS programs in academia has its advantages because an instructor will be there to clarify program requirements and to explain the grading process. At the same time, when they use their own custom-made programming assignments, they must inject themselves into your life in order to answer a lot of questions since their requirements can be very ambiguous at times, whereas textbooks are usually very precise (usually). So to close out this line of thought, there are advantages and disadvantages to both.
How do you know what to learn and whether or not you are ‘getting it’? Well that is a topic I’ve considered writing about, and would probably only do so if I had a compelling reason (i.e. enough interest is generated). However, the core idea is simple: follow the curriculum of one of the better schools out there, take all the tests, write all the programs, and do well on them. It can be done.
A degree plan is a forcing function to get output. You will learn stuff – lots of stuff. You will also learn it in a way that is structured and builds on previous courses. You are guaranteed to get the base knowledge of a computer scientist at the very least, and more that you can get from deeper studies on your own. You can obtain the same exact knowledge from self study. However, there are caveats to both.
Negatives. As I mentioned earlier, instructors can add a degree of learning friction in academics. I found myself asking lots of questions to clarify assignments and also the general mechanics of the course. You will find wildly different methodologies that instructors use to facilitate learning in their courses. The one I thought bore the least amount of fruit was working in teams. Don’t get me wrong. Working in teams is how it goes down in the professional world, but replicating this at the University level has major pitfalls.
A core component of developer teams is collaborating on code. This is done with a version control system of sorts (predominantly git version control). You will get some git xp while in school, but it’s hardly enough. Brief exposure to git is hardly useful for effective teamwork. Thus, working in teams is a soup sandwich due to lack of efficient and bug-free collaboration. Moreover, no one in your team is paid to be there. They have no incentive to perform well and it is not difficult to still do well academically in team-oriented courses, even without a strong evaluation from team members. They may also be downright horrible at everything they do due to lack of concern for learning. Sometimes you will never even hear from a teammate.
Sums it up quite well, with the exception that this meme doesn’t have a female in it. Female students tended to be the top team performers, so they would probably substitute for the guy on the left. To continue, the end result of working in teams is a terrible product that will never be resume worthy, as well as lost time spent fumbling on a half-baked product, instead of being spent on improving existing skills through self-learning and working on a personal project. You lose out on this feature of academia.
Another negative with academics is the time that you will spend making sure your program conforms exactly to whatever an instructor has in mind to get that last 1 or 2 points, or ensuring you know the exact definitions of terms to score well on tests (you can do quite poorly just by missing a handful of these questions), or writing a set minimum number of posts in class forums as required per the syllabus (where nobody writes anything of substance, anyways). In other words, there’s fluff that doesn’t really contribute to your core computer science knowledge. There is certainly value in learning everything there is to learn about everything, but the 80/20 principle does have a place in CS. Time will be better spent with problem-solving, theory, and most of all, programming. These are things you will be able to focus on when engaging in self-study. Although, that doesn’t mean you will do it when not under the scrutiny of the almighty grading system.
Finally, you will not score points for curiosity and self-development in all instances. Back to the Windows phone example. If our class attempted to do anything else (e.g. Android, iPhone), we would not receive support (or mercy) from the instructors. The main reason the instructor chose to teach mobile via Windows phone is because we already knew the languages required to learn it (javascript, html, css). Mmm..laziness. Last time I checked, Windows phone owns < 2% of the market. Learning Windows phone was not an option for me. So I set out to learn some tech that allowed me to build apps for both Android and iPhone, simultaneously. The day before the project was due, an upgrade was released that caused a minor bug in the framework I was using (unbeknownst to me), which broke part of my app. Upon discovering this at the 11th hour, I explained this to the instructors, but was still dinged on the grading quite heavily because of it. One could argue that I should have ‘de-risked’ my situation by not going with a new framework to begin with. Perhaps, but fortune favors the bold, and we don’t learn much without taking risks, anyways. In my case, I lost points, but came out of it a better engineer because of it.
1234567if(has opportunity to use new framework and learn lots) use new framework if(new upgrade has breaking change) do not upgrade return a better engineer
Value adds. Getting a degree helps you get jobs, since many companies specify it as mandatory in job ads. Even though this is not the case with many other fields, it has its reasons. A degree ensures you are a well-rounded computer scientist. It covers all the bases that may be missed in other scenarios. However, there is still the possibility that professors will do things such as teach you antiquated software development processes or technologies (which was my experience) that can mostly be avoided going the self-study route.
A degree also gives you access to professors who can provide answers on the spot, and classmates who can aid with studying and programming. This has a pretty good success rate for the most part, but can also create a lot noise. Personally, I found it all to be less helpful than Google. Doing it on your own means you will you will become very good at asking questions and finding the right answers, which is probably the most important skill you can learn in CS.
One value-add that self-study offers is the ability to specialize in an area you want to pursue. If you want to develop mobile apps, you can do so. If you’re looking to bolster your networking chops (the ‘internet’), then you have no need for the software development process, mobile app development, or UI courses. Some will argue that specialization will pigeonhole you. While this is true to a strong degree, it’s not necessarily a bad thing if you know exactly what you’re after.
Another value add: self-study is free and self-paced.
A value minus, if you will, of a degree is that you are around other students that love to commiserate. This phenomenon seems limited to class forums because the moment it happens on the line, it’s stamped out rather quickly by the community. I saw one student complain about having to learn assembly language for the OSU degree. 9.999 times out of 10, you will never need to know or use assembly language. So will you do anything with assembly? I dunno, but this guy did it at his first job.
Final thoughts. You need to carefully balance the pros and cons against your personal situation. I went after the degree to bolster my on-paper creds and it was paid for by the military, so I cannot relate to the majority of other people out there. Even so, knowing what I know now, I would have much rather done it on my own, since I would have been able to avoid all the things I disliked about the program and tailor my learning a bit.
If I were not me, and I were an aspiring CS-y person, I would start out with an intro to programming book. That’s where the journey begins, and it is a strong starting point to get a feel for what you will be diving into.
0 notes