10 Replies - 5435 Views - Last Post: 28 December 2012 - 10:32 AM

#1 DaMi25  Icon User is offline

  • D.I.C Head

Reputation: 2
  • View blog
  • Posts: 57
  • Joined: 09-December 12

Subjects for IT and CS

Posted 22 December 2012 - 08:13 PM

I am currently studying at a State University with a BSIT Program. In my course, it seems like my professors are not teaching us that much about a certain programming language like Java. In my first year, they taught us C Language with two semesters, then second year, 1st semester is OOP and now second semester Java. Actually, I felt that I want to be a programmer someday but I think in my course, they will not teach that much about pure programming because I'm not a CS student. Now, what I'm doing instead is reading e-books for Java. I'm just self-studying for my future field.. It's so stressful thinking if I'm on the right way. May I ask your suggestions regarding the subjects or first things first like for example, the first topic that I should be studying is OOP before Java. I'll wait for your suggestions. Thanks in advance. :D

Is This A Good Question/Topic? 0
  • +

Replies To: Subjects for IT and CS

#2 Martyr2  Icon User is offline

  • Programming Theoretician
  • member icon

Reputation: 4361
  • View blog
  • Posts: 12,180
  • Joined: 18-April 07

Re: Subjects for IT and CS

Posted 23 December 2012 - 12:23 AM

No CS or IT course teaches pure programming... that I know of. They teach you the ideas behind the languages because that is more important. The idea here is if they teach you about the concepts and patterns behind solving computing problems, who cares what the end language is! If I teach you about searching a sorted array with a binary algorithm, then you could then theoretically apply the same idea to Java, C++, C, Python you name it. This is what you want.

Now if you want to get ahead of the curve a little and jump into Java, then go right ahead and learn the syntax. That will never be the wrong way to do things. Learning something new is never a bad thing. Just make sure you learn things correctly and for that I suggest getting a well respected book and follow other structural programming books like Code Complete 2 and the Clean Coder as well as read others code, experiment and talk out solutions on boards like this.

Just make sure that besides learning the syntax you learn how to solve problems. Learn data structures like stacks, queues, lists, arrays, etc. When would you use a stack vs a queue? Why is a bubble sort inefficient in large lists? How do you structure a program to maximize efficiency and cut down coupling? What is the DRY principle? Learning things like this will make you a better coder. Syntax alone is just icing on the cake.

:)

This post has been edited by Martyr2: 23 December 2012 - 12:25 AM

Was This Post Helpful? 2
  • +
  • -

#3 DaMi25  Icon User is offline

  • D.I.C Head

Reputation: 2
  • View blog
  • Posts: 57
  • Joined: 09-December 12

Re: Subjects for IT and CS

Posted 26 December 2012 - 12:33 AM

View PostMartyr2, on 23 December 2012 - 07:23 AM, said:

No CS or IT course teaches pure programming... that I know of. They teach you the ideas behind the languages because that is more important. The idea here is if they teach you about the concepts and patterns behind solving computing problems, who cares what the end language is! If I teach you about searching a sorted array with a binary algorithm, then you could then theoretically apply the same idea to Java, C++, C, Python you name it. This is what you want.

Now if you want to get ahead of the curve a little and jump into Java, then go right ahead and learn the syntax. That will never be the wrong way to do things. Learning something new is never a bad thing. Just make sure you learn things correctly and for that I suggest getting a well respected book and follow other structural programming books like Code Complete 2 and the Clean Coder as well as read others code, experiment and talk out solutions on boards like this.

Just make sure that besides learning the syntax you learn how to solve problems. Learn data structures like stacks, queues, lists, arrays, etc. When would you use a stack vs a queue? Why is a bubble sort inefficient in large lists? How do you structure a program to maximize efficiency and cut down coupling? What is the DRY principle? Learning things like this will make you a better coder. Syntax alone is just icing on the cake.

:)/>


Thanks for the reply sir! :) I did what you said. Now I have a copy of Code Complete 2 and Clean Coder. What will I do next? Shall I read Java first before Data Structures, Code Complete 2 and Clean Coder? I always practice solving problems even if they are just for beginners so that I can understand very well why was the structure of the code like that. Thanks again for the reply! Happy Holidays! :)
Was This Post Helpful? 0
  • +
  • -

#4 mojo666  Icon User is offline

  • D.I.C Addict
  • member icon

Reputation: 354
  • View blog
  • Posts: 777
  • Joined: 27-June 09

Re: Subjects for IT and CS

Posted 26 December 2012 - 05:02 PM

The general order would be learn the language first, then OOP concepts, then data structures. There's a lot of overlap between the 3, but you can't learn Java OOP without first doing simple syntax, and you can't implement data structures without knowing a little bit about Objects. You should be able to find a book that walks you through everything in a sensible order. Java is not my language so unfortuneately I don't have any book suggestions.
Was This Post Helpful? 1
  • +
  • -

#5 DaMi25  Icon User is offline

  • D.I.C Head

Reputation: 2
  • View blog
  • Posts: 57
  • Joined: 09-December 12

Re: Subjects for IT and CS

Posted 27 December 2012 - 08:37 AM

View Postmojo666, on 27 December 2012 - 12:02 AM, said:

The general order would be learn the language first, then OOP concepts, then data structures. There's a lot of overlap between the 3, but you can't learn Java OOP without first doing simple syntax, and you can't implement data structures without knowing a little bit about Objects. You should be able to find a book that walks you through everything in a sensible order. Java is not my language so unfortuneately I don't have any book suggestions.


Thank you for the reply sir. So what are you saying is that I should study first the basic programming syntax in Java until Looping? Anyway, thanks a lot sir. God bless! :)
Was This Post Helpful? 0
  • +
  • -

#6 jon.kiparsky  Icon User is offline

  • Pancakes!
  • member icon


Reputation: 7884
  • View blog
  • Posts: 13,396
  • Joined: 19-March 11

Re: Subjects for IT and CS

Posted 27 December 2012 - 09:03 AM

There are two things you're trying to learn here, and they're somewhat different. Learning the syntax of a language like java is important because it allows you to express your will to the machine in that language. For example, in Java I would write something like this:


for (String s : wordList)
{
  if (s.toLowerCase.contains("foo"){
     System.out.println(s);
  }
}


where in python I might write

for s in word_list:
  if 'foo' in s:
    print s



and in lisp I'd do the same thing by recursively eating the list.

Languages are just the tools that you use to tell the computer what you want. "Just" in the sense that a hammer is "just" the way a carpenter nails two pieces of wood together: it's absolutely critical that you know how the tools work, but that is not sufficient. What you also need is the understanding of what it is you're trying to build, and how best to build this sort of object.

That's the sort of thing that Martyr2 is talking about, the stuff that's the same across all languages, in the same way that 2+2 makes 4 in all languages, and in any notation. It doesn't matter if you say it in Chinese, or you write it out in binary or hex or in Roman numerals or Incan quipu, the fact is still the same. In the same way, computations have an underlying reality which can be known and reasoned about, and knowing about this is important for writing code that will work in a reasonable way.
In fact, the underlying reality of programs is usually expressed and analyzed and proved in terms of advanced maths, so learning about real math is a very important thing for a programmer. For example, you won't understand cryptography unless you understand number theory, because everything about cryptography is number theory, at bottom. You might understand how to use someone else's crypto library, but you won't understand what it is or why it works without understanding the behavior of modulo arithmetic or large primes. If you want to talk about networks, you really need to understand graph theory - without it, you're just a consumer.

So you can see this is not a simple question. Largely it depends on what you ultimately want to to as a programmer, and on what most turns your crank as an intelligent problem-solving individual. Programming is problem solving, and this is a problem: solve it. There isn't an algorithm, so you have to use heuristics.

Yes, you should probably make learning the fundamentals of Java a priority. You need a language in which to think about these problems, and Java's a good one for that. Write a bunch of programs, and get stuff wrong. You'll find the more theoretical stuff makes more sense once you've made some of the simpler mistakes. Once you've got to that point, you'll want to take Data Structures and Algorithms - very important material there. After that, if you're really interested, you'll have amassed a list of problems you want to solve and areas you want to explore. At that point, you're on your own.
Was This Post Helpful? 4
  • +
  • -

#7 DaMi25  Icon User is offline

  • D.I.C Head

Reputation: 2
  • View blog
  • Posts: 57
  • Joined: 09-December 12

Re: Subjects for IT and CS

Posted 27 December 2012 - 09:15 PM

Thank you very much Sir! Now, I'm more excited in learning Java. I'll follow what all of you replied in this topic. One last thing, do you know books about Data Structures and Algorithms which are easy to understand? Thanks for sharing your knowledge with me. This forum is the best! May God bless you all! Thanks! Happy Holidays! :)
Was This Post Helpful? 0
  • +
  • -

#8 jon.kiparsky  Icon User is offline

  • Pancakes!
  • member icon


Reputation: 7884
  • View blog
  • Posts: 13,396
  • Joined: 19-March 11

Re: Subjects for IT and CS

Posted 27 December 2012 - 09:33 PM

Easy to understand? Well, that's a tall order. The ideas are not incredibly difficult to grasp, but there are a lot of them, and they fit together a lot of ways, and each of them takes some getting used to. So a book that promises to make them easy is probably leaving stuff out, or lying.

The source text for all of this stuff is The Art of Computer Programming by Donald Knuth. Don't go out and buy it - it's way more gun than you need.
Robert Sedgewick has written the definitive textbook on algorithms, which is sort of a condensed summary of Knuth with a lot less math, and his current edition targets the Java language, so that's useful for you (Knuth's book targets an imaginary machine language for an imaginary machine!). Then there's a guy called LaFore who has a reasonably good text published by Mitchell and Waite - this is a decent book and might be a little easier to follow than Sedgewick.
I think your best bet, though, would be to take the DS&A course that will be offered at your school. This material is best learned from a professor, in real time, in a room with other students. It's complex material, it's dense material, and it's highly interconnected. You'll really want to have a professor who can make sure you pick up the nuances and other students that you can discuss the material with, and who will ask the questions that you don't think to ask. If that course isn't on the track you're taking, get into it anyway. It's probably the single most important course you can take if you want to write programs well.
Was This Post Helpful? 2
  • +
  • -

#9 DaMi25  Icon User is offline

  • D.I.C Head

Reputation: 2
  • View blog
  • Posts: 57
  • Joined: 09-December 12

Re: Subjects for IT and CS

Posted 28 December 2012 - 02:32 AM

I downloaded an E-book of Sedgewick and that of Robert LaFore because I think I can understand more because their examples were written in Java while those of Knuth's are written in Assembly Language. I'll have a hard time reading those examples. I think this is my last question if you don't mind, I have a book in Java Programming of Joyce Farrell. These are its contents:
1. Creating Your First Java Classes
2. Using Data
3. Using Methods, Classes, and Objects
4. More Object Concepts
5. Making Decisions
6. Looping
7. Characters, Strings, and the String Builder
8. Arrays
9. Advanced Array Concepts
10.Introduction to Inheritance
11.Advanced Inheritance Concepts
12.Exception Handling
13.File Input and Output
14.Introduction to Swing Components
15.Advanced GUI Topics
16.Graphics
17.Applets, Images and Sound,

So I'll study numbers 1, 2, 5, 6, 7, 8, 9(Fundamentals of Programming?) first before studying the remaining numbers(Advanced Topics or I think OOP Concepts?)? What will you suggest Sir? Thanks. :)
Was This Post Helpful? 0
  • +
  • -

#10 jon.kiparsky  Icon User is offline

  • Pancakes!
  • member icon


Reputation: 7884
  • View blog
  • Posts: 13,396
  • Joined: 19-March 11

Re: Subjects for IT and CS

Posted 28 December 2012 - 07:13 AM

I think she probably wrote the book to progress from one chapter to the next. Why not just go through it from front to back?

The most important thing is that you should do every exercise for every chapter - write all the code. If she gives you an example, test it out. Make sure you understand what the code is doing and why. One really useful way to get that is to try changing the examples. If you change a piece of code and it doesn't act the way you thought it would, you probably don't understand it.
Was This Post Helpful? 1
  • +
  • -

#11 DaMi25  Icon User is offline

  • D.I.C Head

Reputation: 2
  • View blog
  • Posts: 57
  • Joined: 09-December 12

Re: Subjects for IT and CS

Posted 28 December 2012 - 10:32 AM

Okay. Thank you for your kind response Sir. I really appreciate your effort in answering my noob questions. hahaha. Anyway, Good Luck for me and God Bless You Sir! :)
Was This Post Helpful? 0
  • +
  • -

Page 1 of 1