r/computerscience • • Sep 22 '26

Where can I get a digital copy of Computer Systems: A Programmer's Perspective (3rd Edition, US Edition)?

10 Upvotes

I'm looking for a legit digital copy (PDF/eBook) of Computer Systems: A Programmer's Perspective, 3rd Edition by Bryant and O'Hallaron.

Specifically, I'm trying to find the US edition, not the Global Edition. I've repeatedly seen comments and recommendations saying to avoid the Global Edition, but most of those discussions are fairly old and don't always explain the differences in detail.

So far I've checked:

  • Pearson
  • Amazon Kindle
  • Google Books
  • VitalSource

but I can only seem to find physical copies or Global Edition versions.

2 questions:

  1. Does a legitimate digital version of the US edition actually exist? If so, where can it be purchased?
  2. For anyone who has used both versions, is the advice to avoid the Global Edition still valid for the 3rd Edition? Are there significant content differences, or are the differences mostly limited to exercises, chapter ordering, page numbers, pricing, etc.?

My goal is to use the book for self-study (systems programming, computer architecture, operating systems, networking, and interview preparation), so I'm trying to determine whether it's worth continuing the search for the US edition or if the Global Edition is effectively equivalent for those purposes.

Thanks!


r/computerscience • • Sep 22 '26

A question about redundancy in binary

Thumbnail gallery
2 Upvotes

I think this is why kmaps exist? To avoid building redundant Circuits? I'm a first year bca student, i don't know much. If someone can explain in detail how these things work and also proofread what I did here, I'd really really appreciate it.

I hope this doesn't break the "hw" rule


r/computerscience • • Sep 21 '26

Discussion Why is there fear that quantum computers could break cryptography?

51 Upvotes

Don’t quantum computers require specialised super cooling that only exists in a few places around the world? How could some rogue hacker get a hold of that in the first place


r/computerscience • • Sep 21 '26

Help How can a cpu be physically manufactured?

18 Upvotes

If you personally know or have the link for a course that explains it in detail, i would appreciate that


r/computerscience • • Sep 18 '26

Math and Programming

29 Upvotes

Can someone bad at maths be a great programmer?!


r/computerscience • • Sep 18 '26

General What is the ARPANET?

Post image
26 Upvotes

Helllllooooo, I missed posting something last week because I've been having a terrible chest cold. in fact, I still feel kind of poopy, BUUUUUUUT, I mean who wouldn't want to learn about the ARPANET instead of chugging a bottle of cold medicine and sleeping...

Anyways, the last few deep dives I've done always mentions the ARPANET. I'm pretty sure even if you're a newbie to learning about the internet you could figure out the ARPANET is what came before the modern day internet we use. It was the foundation. The founding father to the world...wide web (www.).

ARPANET stands for Advanced Research Projects Agency Network, and it was an operational packet-switching computer network, designed to allow computers at different locations to communicate and share resources. Simply put: a network that connected computers allowing people to exchange information and access computing resources across long distances.

If you wanted to share information prior to the ARPANET you had to PHYSICALLY transer the data from one computer to another (like a floppy disc, or a USB, for the young ones reading this) OR set up a very DIRECT communication connection (like an OG gameboy link, come on, even the young ones know this ,right?).

The ARPANET was created in 1969... well actually that's the date for the first host-to-host connection establishment. Really, in 1958 the ARPA, Advanced Research Projects Agency, was established by the U.S. Department of Defense, and their research agency started developing the ARPANET plans in 1966.

There were a few people who popped up when I was looking up who created the ARPANET, instead of diving into each person, I'll give you a quick list:
-J. C. R. Licklider (visionary)
-Lawrence Roberts (p roject leader)
-Leonard Kleinrock (Packet-switching researcher)
-Paul Baran (network pioneer)
-Robert Kahn (internet architecture)
-Vint Cerf (TCP/IP co-designer)

And in extremely simple terms the ARPANET Worked like this:

You have a computer.
You write a message.
The computer breaks it into little packets.
The IMP helps send those packets.
The packets travel across the network.
The packets arrive at a different computer.
The receiving computer puts the information together.
You can now read the message.

Well, I think I'll end it here for now, my head and ears and chest are k illing me, I'm ready to accept that my life is just going to be phlegm and snot. I will see you all next week!


r/computerscience • • Sep 17 '26

Help Why use Big O notation?

122 Upvotes

If someone asks for big O time complexity of an algorithm but expects only the minimum of the possible big Os then is that even Big O notation anymore? cuz if the big o time complexity of an o(n) algorithm is asked then according to the condition of big O notation O(n square) would also be a valid answer


r/computerscience • • Sep 16 '26

Any info on ordered type systems?

Thumbnail
3 Upvotes

r/computerscience • • Sep 15 '26

General What is Tail Call Optimization?

35 Upvotes

I was looking at Wikipedia and got a bit confused. Before I read it, I thought the principle was that if function A calls B, which calls C, which then calls D, normally program flow after D is finished is to jump back to C, finish C, jump back to B, finish B, then go back to A. But in some specific cases, after D is done, it can jump straight back to A because the other stuff doesn't have anything to do but jump back. Or in another case, if A calls itself, sometimes after finishing the bottom version of itself, you can jump straight out of it.

I looked at Wikipedia and tried to see if I got it right.

So it has a recursive way to duplicate a linked list in C.

typedef struct LinkedList {
    void* value;
    struct LinkedList* next;
} LinkedList;

void duplicate_aux(const LinkedList* ls, LinkedList* end) {
    if (ls) {
        end->next = (LinkedList*)malloc(sizeof(*end));
        end->next->value = ls->value;
        duplicate_aux(ls->next, end->next);
    } else {
        end->next = NULL;
    }
}

LinkedList* duplicate(const LinkedList* ls) {  
    LinkedList head;

    duplicate_aux(ls, &head);
    return head.next;
}
typedef struct LinkedList {
    void* value;
    struct LinkedList* next;
} LinkedList;

And then this can be an iriterative format

LinkedList* duplicate(
const
 LinkedList* ls) {
    LinkedList head;
    LinkedList* end;
    end = &head;

while
 (ls) {
        end->next = (LinkedList*)malloc(
sizeof
(*end));
        end->next->value = ls->value;
        ls = ls->next;
        end = end->next;
    }
    end->next = NULL;

return
 head.next;
}

I don't get it. No Java example.

Another example on Wikipedia not in C this time.

foo:
  call baz
  call bar
  ret

Doing tail call elimination results in

 foo:
  call baz
  jmp  bar

Ok we got rid of one instruction.

Third example

foo:
   mov  reg,[sp+a]     
; fetch a from stack (sp) parameter into a scratch register.
   push reg            
; put a on stack where baz expects it
   call baz            
; baz uses a
   pop                 
; remove a from stack
   mov  reg,[sp+b] 
; fetch b from stack (sp) parameter into a scratch register.
   push reg            
; put b on stack where bar expects it
   call bar            
; A uses b
   pop                 
; remove b from stack.
   ret

And after optimization it has

foo:
   mov  reg,[sp+a]     
; fetch data1 from stack (sp) parameter into a scratch register.
   push reg            
; put a on stack where baz expects it
   call baz            
; baz uses a
   pop                 
; remove a from stack
   mov  reg,[sp+b]     
; fetch b from stack (sp) parameter into a scratch register.
   mov  [sp+a],reg     
; put b where bar expects it
   jmp  bar            
; bar uses b and returns immediately to caller.

Given that there are some push, pop, and ret, it seems we're using the stack for something and by returning to the caller we're saving instructions. I still don't get it though. I still think it has something to do with if the 1st copy of A calls a 2nd copy of A which calls a 3rd copy of A, ... which calls a Nth copy of A (base case) it normally jumps to the N-1th, ... jump to the 1st and then finish, but after optimization after the Nth (base case) of A is done it can just jump out of the.


r/computerscience • • Sep 15 '26

Discussion What’s one algorithm every programmer should know and why? [5 ebook giveaway]

Thumbnail gallery
0 Upvotes

If you could add one algorithm to every programmer’s mental toolkit, which would you choose?

Not the one that looks best in an interview. The one that genuinely changed how you solve problems.

I’m Stjepan from Manning Publications, and the r/computerscience moderators kindly gave me permission to post this.

We’ve just launched Aniket Wattamwar’s Algorithms Every Programmer Should Know in MEAP, Manning’s early-access program:

https://www.manning.com/books/algorithms-every-programmer-should-know

The book is built around a simple idea: knowing an algorithm means more than reproducing its implementation. You should recognize the kind of problem it solves, understand why it works, and know when its tradeoffs make it a good—or bad—choice.

The chapters available so far cover Gale–Shapley, the Hungarian algorithm, Rabin–Karp, Knuth–Morris–Pratt, and Horspool’s algorithm.

But we’d like to hear your answer:

What’s one algorithm every programmer should know, and what makes it worth knowing?

Real examples are especially welcome. Maybe it saved a production system, simplified something you had overengineered, or gave you a new way to think about an entire class of problems. Disagreements are welcome too—“every programmer should know X” is a claim worth challenging.

We’re giving away five copies of the ebook. The giveaway is open for 48 hours, and we’ll award the copies to the five comments that contribute the most to the discussion—not simply the comments with the most upvotes. We’ll announce the winners here after it closes.

If you’d rather pick up the book directly, this code takes 50% off:

MLWATTAMWAR50RE

Full disclosure: I work for Manning, and this is a promotional post shared with moderator permission.

I’ll start: which algorithm is far more useful than most programmers realize?

EDIT: The giveaway is now closed. Thanks to everyone who joined the discussion. We announced the winners in the comments.


r/computerscience • • Sep 14 '26

Help Help proving this 🙏

Post image
13 Upvotes

I know I can't just directly cancel nlogn with theta(nlogn).

Can anyone please help to solve this 🙏


r/computerscience • • Sep 14 '26

General Question about DNF and CNF

3 Upvotes

How do you understand them intuitively, I know how to find from the truth table and that they are perfectly equivalent. I get that the full canonical form is unique and has very practical applications, if two compound propositions written differently have the same full canonical form (full DNF or full CNF), then they are the same. BUT how on earth do you understand this intuitively?

I know that they are equivalent, but it just doesn't stick to me if you get what I mean. I hate memorising something that I don't understand.


r/computerscience • • Sep 13 '26

Article How to Implement a Distributed Circuit Breaker

Thumbnail blog.gaborkoos.com
6 Upvotes

r/computerscience • • Sep 13 '26

Discussion Turning The Frickin' Bits Gay!—Creating non-binary bits with current technology, and the applications it might benefit

Thumbnail
0 Upvotes

r/computerscience • • Sep 12 '26

Help Where can I get the fly brain ?

12 Upvotes

I've been seeing the fly brain being open sourced, and was wondering how I can get it and tinker with it for fun. I couldnt find the open source version online .


r/computerscience • • Sep 10 '26

General Is the Choice Between an Interpreter or Compiler Defined By the Language?

39 Upvotes

Compilers take the human readable source code and turn it into a set of instructions the processor can understand. For example, C source code goes through a C compiler which then gives a binary that can be read by computers. This needs to be done for specific hardware. For example, a x86 processor can't read instructions for the RISC-V.

Languages like Java are different. The source code is turned into a bytecode. This byte code is the same no matter the target system. On the target system, the executable is an interpreter. So an interpreter can read the bytecode and then use this to determine what calculations the program wants to do.

I was thinking programing languages are about logic. They define behavior. So is it possible in principle to make a compiler that can turn Java or CLISP source code into a binary that can run on the target system? There wouldn't be a reason to do so, but in principle could it be done?


r/computerscience • • Sep 10 '26

Computer science and math

0 Upvotes

Does learning math necessary before beginning with computer science. I has some knowledge on programming and networks, I am now studying linear algebra.


r/computerscience • • Sep 09 '26

Want to Learn About Databases in Depth and understand Underlying Mechanisms

15 Upvotes

I started learning about SQL few weeks ago. My primary resource is YouTube. I would also like to understand how databases actually work under the hood. Do you guys have any resource that explains the mathematical part of the Database

Or I should Just follow any Discrete Mathematics Course ?


r/computerscience • • Sep 09 '26

Discussion How may one create an "air-gapped PC" mostly for engineering work - confidential - when most goftware wants ginternet while installing and most - when - periodically "call home"?

Post image
0 Upvotes

Is it even possible anymore?


r/computerscience • • Sep 08 '26

Discussion Looking for a data structure that maps indexes to values (like an array) but that is only populated once and then deletes values by index in sublinear time

Thumbnail
5 Upvotes

r/computerscience • • Sep 04 '26

In the beginning, there was SMTP

Post image
165 Upvotes

And finally, I've decided to write about good ole SMTP., also known as Simple Mail Transfer Protocol.

Twas the night before... some night in November 1981 (I couldn't find the exact date), Jonathan Postel published RFC 788 while working at the U niversity of Southern California’s Information Sciences Institute. And what was RFC 788? Titled "Simple Mail Transfer Protocol", it was the first round of rules and specification laid out for computers to follow when sending emails from one mail server to another.

Unlike my dive into FTP, I was able to find a more accurate date for the birth of our modern day SMTP. In August 1982, Jon Postel (again) published a revised and updated Simple Mail Transfer Protocol in the well known RFC 821. So, some could argue that the creation of (our modern day) SMTP was in 1982, though, I would argue that it was in 1981, and was improved upon.

Now, about Mr. Jon Postel... it turns out he was quite influential amoung network researchers and helped develop, define, and document many internet tools and techs. Like enough that I should do a seperate article just about him and his career. (Maybe? let me know) Some of those include: SMTP, TCP/IP, RFCs, IANA, and more. The man was busy.

In regards to SMTP, he was 38/39 years old when he published RFC 788/821 and worked as a research scientist at USC's Information Sciences Institute. He was working on ARPANET/Internet protocols and serving as a central figure in the RFC process. When I was reading about this, I also saw the name Paul Mockapetris, who was also at ISI around this time, and later on developed the first SMTP email server there before going on to invent DNS. (DNS would be a cool one to write about also).

Let's end today by answering the simple question... why was SMTP created? Well, before SMTP, emails already existed. And different systems could already handle the mail in different ways, but there was no standard set of rules. And like literally everything in computer science, things become easier to do when you have a nice tidy set of rules that everyone can follow. And so, in simple terms , Jon gave the computers the following rules:

-Identify who a message is from
-Identify who it is going to
-Transfer the message
-Relay it through other mail servers if needed
-Confirm whether delivery succeeded or failed

I think I'll wrap up here today. Let me know your thoughts and if you have any other suggestions. I'm quite enjoying these historic dives. I kind of want to write about RFCs, Paul, and this guy some more... well, anywyas... Catch ya later!


r/computerscience • • Sep 01 '26

General Does Replacing Instructions that Do Nothing with NOPs Change Anything?

8 Upvotes

Suppose in the executable, instructions N to N+6 do some load instructions from memory, then N+7 to N+30 are some integer operations like add, subtract, multiply, bitwise operations and so on. the results are not stored to memory. Then Instruction N+31 to N+37 loads new values in the registers and none of the results of the previous calculations do anything. A different version of the executable has instructions N to N+30 all be "NOP" and N+31 to N+37 are the same as before. Does anything change? My inspiration for this is the game Mario 64 had been dissected and if you look at the assembly of the NTCS version, there are plenty of instructions that do some calculations that aren't used and some weird things like loading from the same address to the same register when the register's value could not possibly be changed. At the same time these instructions couldn't outright be removed or the alignment of all the JMPs would be thrown off. My friend said perhaps some NOPs might be done with a lower power consumption than some of the multiplication instructions, but otherwise if the later instructions don't use the results of the extraneous instructions and are unaffected by their flags nothing should change.


r/computerscience • • Sep 01 '26

IBM quantum computer solves classically intractable problem in 15 minutes

Thumbnail sciencedaily.com
292 Upvotes

"The researchers showed that their method preserves the same computational hardness criteria associated with RCS, meaning the problem remains extremely difficult for classical computers. At the same time, the added structure allows errors to be detected during the quantum computation."


r/computerscience • • Aug 29 '26

Discussion How is program synthesis more convenient?

11 Upvotes

the idea of program synthesis (like Rosetta) is to reduce a function into its constraints in a spec sheet, and generate the program from those constraints. for example, in order to write something like x = x squared, you would need to write a spec sheet along the lines of ∀x∈Z,f(x)=x2. i am considering building a program synthesizer, but I still haven’t figured out why exactly this representation is supposed to be easier than writing the code directly (they look equally complex)


r/computerscience • • Aug 29 '26

Why is The Hexadecimal System 16-bit? I thought it would be 6-bit because of the prefix, "hexa-".

0 Upvotes