Rule 1: Software is Knowledge Capture. Software means something. If you're unclear on the meaning, spend more time talking to users to understand what they do.
Algorithms and Data Structures are two sides of the same coin. Algorithm depends on data structure, data structure depends on algorithm.
Unlearn bubble sort as quickly as possible. Seriously. All modern languages (Java, Python, etc.) have collection classes that implement a better sort than bubble sort. There are absolutely no circumstances under which you should ever use bubble sort for anything. You should be looking for a collection class that includes a sort method. Better, you should be looking for a algorithm which avoids sorting entirely.
You must learn several languages.
Programming language (Java, Python, etc.)
Shell language.
Database language (SQL)
Presentation languages (HTML and CSS)
Other data representation languages (XML, JSON)
You must learn several data structures.
Sequences (lists, tuples, files)
Hierarchical (like XML and HTML documents, as well as the basic file system)
Relational (like databases, and the file system with hard and soft links thrown in)
Maps (or Indexes or Associative Arrays) including Hash Maps and Tree Maps
Sets
Plus some algorithmic complexity analysis. Sometimes called "Big O". Why a bubble sort is bad is that it's O ( n ^ 2 ), where a quicksort is O( n log n ).